AlphaBot: Verzweigung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


== Inhalt des vierten Termins ==
== Inhalt des vierten Termins ==
* Wir haben die Motoransteuerung geändert, so dass Alf ein Dreieck gefahren ist.
* Wir haben die Motoransteuerung geändert, so dass Alf eine feste Strecke fährt.
* Wir haben uns die Inkrementalgeber angeschaut und die Werte mit dem Demo <code>E13_Photo_Interrupter_Sensor</code> angezeigt.
* Wir haben das Poti ausgelesen.
* Anschließend haben wir die Umdrehungen gezählt (<code>E14_Wheel_Encoders</code>).
* Wir haben den Servomotor mit den Potiwerten angesteuert.
* Wir haben den Radumfang berechnet: <math>U=\pi \cdot d = 3,14\cdot 6,4\,cm=20,1\,cm</math>.
* Fazit: Drehen beider Räder um 360&thinsp;°, dann fährt der Roboter 20,1&thinsp;cm vorwärts.


== Quelltext ==
== Quelltext ==
Zeile 14: Zeile 12:
<div style="width:1200px; height:300px; overflow:auto; border: 2px solid #088">
<div style="width:1200px; height:300px; overflow:auto; border: 2px solid #088">
<pre>
<pre>
/* Deklaration */
/* Bibliothek einbinden */
#include <Servo.h>
#include <Servo.h>


Servo US_SERVO;  // Erzeugt ein Servo Objekt, um diesen nachfolgend anzusteuern
Servo usServo;  /* Erzeugt ein Servo Objekt, um den Servo des Ultraschall anzusteuern */


int potpin = 0;  // analog pin used to connect the potentiometer
int AnalogPin_s16      = 0;  /* An Analogpin A0 ist das Poti angeschlossen    */
int val;    // variable to read the value from the analog pin
int PotiWert_s16      = 0; /* Variable für die Stellung des Potis 0..676   */
int ServoStellung_s16  = 0;  /* Variable für die Stellung des Servos 0°..180° */


void setup() {
void setup() {               /* Einmalige Systeminitialisierung              */
   US_SERVO.attach(9); // attaches the servo on pin 9 to the servo object
   usServo.attach(9);         /* Verbindung der Servo mit einem Digitalpin    */
   Serial.begin(9600); // init für Serielle ausgabe
   Serial.begin(9600);       /* Init für serielle Ausgabe                    */
}
}


void loop() {
void loop() {                                           /* Main Schleife */
   val = analogRead(potpin);           // reads the value of the potentiometer (value between 0 and 1023)
   PotiWert_s16 = analogRead(AnalogPin_s16);             /* Potistellung wird ausgelesen */  
   Serial.println(val);
   Serial.println(PotiWert_s16);
   val = map(val, 0, 676, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
   ServoStellung_s16 = map(PotiWert_s16, 0, 676, 0, 180); /* Die Stellung des Potis wird auf 0°..180° skapiert */
  US_SERVO.write(val);
  usServo.write(ServoStellung_s16);                     /* Der Servo soll sich an die Position drehen */  
//  for (int i=0;4;i++)
   delay(15);                                             /* Wir warten 15ms, bis der Servo seine Position erreich hat */
//  {
//    US_SERVO.write(0);
//    delay(500);
//    US_SERVO.write(90);
//    delay(500);
//    US_SERVO.write(180);
//    delay(500);
// }
                  // sets the servo position according to the scaled value
   delay(20);                           // waits for the servo to get there
}
}
</pre>
</pre>
</div>
</div>
Zeile 50: Zeile 38:
-->
-->


== Hausaufgaben bis zum 4. Termin ==
== Hausaufgaben bis zum 5. Termin ==
Schaut Euch die Ansteuerung Eures Servos noch einmal an. Könnt Ihr den Ultraschall von ganz links bis ganz rechts drehen?
Schaut Euch die Ansteuerung Eures Servos noch einmal an. Könnt Ihr den Ultraschall in 1° Schritten von ganz links bis ganz rechts und wieder zurück drehen lassen?


== Musterlösung ==
== Musterlösung ==
* [[Hausaufgaben3_Tipp_1|Tipp 1]]
* [[Hausaufgaben4_Tipp_1|Tipp 1]]
* [[Hausaufgaben3_Tipp_2|Tipp 2]]
* [[Hausaufgaben4_Tipp_2|Tipp 2]]
* [[Hausaufgaben3_Lösung|Lösung]]
* [[Hausaufgaben4_Lösung|Lösung]]


----
----
→ zurück zum Hauptartikel: [[Projekt_Alf_–_Mobile_Robotik|Projekt Alf]]
→ zurück zum Hauptartikel: [[Projekt_Alf_–_Mobile_Robotik|Projekt Alf]]

Aktuelle Version vom 7. April 2022, 19:16 Uhr

Autor: Prof. Dr.-Ing. Schneider

Inhalt des vierten Termins

  • Wir haben die Motoransteuerung geändert, so dass Alf eine feste Strecke fährt.
  • Wir haben das Poti ausgelesen.
  • Wir haben den Servomotor mit den Potiwerten angesteuert.

Quelltext

  • E24_Servo_Knop


/* Bibliothek einbinden */
#include <Servo.h>

Servo usServo;  /* Erzeugt ein Servo Objekt, um den Servo des Ultraschall anzusteuern */

int AnalogPin_s16      = 0;  /* An Analogpin A0 ist das Poti angeschlossen    */
int PotiWert_s16       = 0;  /* Variable für die Stellung des Potis 0..676    */
int ServoStellung_s16  = 0;  /* Variable für die Stellung des Servos 0°..180° */

void setup() {               /* Einmalige Systeminitialisierung               */
  usServo.attach(9);         /* Verbindung der Servo mit einem Digitalpin     */
  Serial.begin(9600);        /* Init für serielle Ausgabe                     */
}

void loop() {                                            /* Main Schleife */
  PotiWert_s16 = analogRead(AnalogPin_s16);              /* Potistellung wird ausgelesen */ 
  Serial.println(PotiWert_s16);
  ServoStellung_s16 = map(PotiWert_s16, 0, 676, 0, 180); /* Die Stellung des Potis wird auf 0°..180° skapiert */
  usServo.write(ServoStellung_s16);                      /* Der Servo soll sich an die Position drehen */ 
  delay(15);                                             /* Wir warten 15ms, bis der Servo seine Position erreich hat */
}

-->

Hausaufgaben bis zum 5. Termin

Schaut Euch die Ansteuerung Eures Servos noch einmal an. Könnt Ihr den Ultraschall in 1° Schritten von ganz links bis ganz rechts und wieder zurück drehen lassen?

Musterlösung


→ zurück zum Hauptartikel: Projekt Alf