Jeder Motor benötigt 3 Eingänge. An Pin 1 und Pin 9 werden die Motoren prinzipiell ein- bzw. ausgeschalten. Über Pulsweitenmodulation kann hier auch die Geschwindigkeit geregelt werden. Pin 2 und 7 bzw. Pin 10 und 15 sind für die Laufrichtung verantwortlich der Motoren verantwortlich. Von Pin 4,5 12 und 13 muss nur einer auf GND geschalten werden.
Effekt | ||
Pin 5: HIGH | Pin 6: LOW | Motor dreht sich |
Pin 5: LOW | Pin 6: HIGH | Motor dreht sich |
Pin 5: LOW | Pin 6: LOW | Motor dreht sich nicht |
Pin 5: HIGH | Pin 6: HIGH | Motor dreht sich nicht |
Normalerweise können auf einen Pin nur digitale Werte (HIGH, LOW) ausgegeben werden. Auf die Pins 3, 5,6, 10 und 11 erkennbar an der Schlange ˜ ("Tilde") können auch mit Hilfe des Befehls analogWrite(Pinnummer, Wert) analoge Werte ausgeben werden. Als Wert sind ganze Zahlen zwischen 0 und 255 zulässig. Hiermit ist es also möglich die Drehzahl eines Gleichstrommotors zu regeln.
Bei der Pulsweitenmodulation (PWM) wird die Spannung innerhalb einer Periodendauer ganz schnell zwischen 0V und 5V geschalten. Dadurch ergibt sich, dass nicht die gesammte Zeit Spannung anliegt und deshalb weniger Energie zur Verfügung steht.
Befehl | Tastgrad |
analogWrite(pin,0) | 0% |
analogWrite(pin,64) | 25% |
analogWrite(pin,128) | 50% |
analogWrite(pin,191) | 75% |
analogWrite(pin,255) | 100% |
int motor1_A=11; int motor1_B=10; int motor1_enable=9; int motor2_A=5; int motor2_B=6; int motor2_enable=3; int v= 200; void setup(){ Serial.begin(9600); pinMode(motor1_A,OUTPUT); pinMode(motor1_B,OUTPUT); pinMode(motor1_enable, OUTPUT); pinMode(motor2_A,OUTPUT); pinMode(motor2_B,OUTPUT); pinMode(motor2_enable, OUTPUT); } void loop(){ VorLinks(v); VorRechts(v); delay(1000); StopLinks(); StopRechts(); delay(1000); } void VorRechts(int v){ digitalWrite(motor1_A,LOW); digitalWrite(motor1_B,HIGH); analogWrite(motor1_enable,v); } void VorLinks(int v){ digitalWrite(motor2_A,HIGH); digitalWrite(motor2_B,LOW); analogWrite(motor2_enable,v); } void StopRechts(){ digitalWrite(motor1_A,LOW); digitalWrite(motor1_B,LOW); analogWrite(motor1_enable,0); } void StopLinks(){ digitalWrite(motor2_A,LOW); digitalWrite(motor2_B,LOW); analogWrite(motor2_enable,0); }