AlphaBot: Verzweigung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 14: Zeile 14:
<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>

Version vom 7. April 2022, 13:27 Uhr

Autor: Prof. Dr.-Ing. Schneider

Inhalt des vierten Termins

  • Wir haben die Motoransteuerung geändert, so dass Alf ein Dreieck gefahren ist.
  • Wir haben uns die Inkrementalgeber angeschaut und die Werte mit dem Demo E13_Photo_Interrupter_Sensor angezeigt.
  • Anschließend haben wir die Umdrehungen gezählt (E14_Wheel_Encoders).
  • Wir haben den Radumfang berechnet: .
  • Fazit: Drehen beider Räder um 360 °, dann fährt der Roboter 20,1 cm vorwärts.

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 4. Termin

Schaut Euch die Ansteuerung Eures Servos noch einmal an. Könnt Ihr den Ultraschall von ganz links bis ganz rechts drehen?

Musterlösung


→ zurück zum Hauptartikel: Projekt Alf