Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektesose24:keksbus:projektdoku

Dies ist eine alte Version des Dokuments!




Projektdokumentation

Einleitung

Umsetzung

Ergebnisse und Dokumentation

Hier zu sehen: Der Keksbus wird eingeschaltet und die Motoren drehen die Räder. Als nächstes wird ein Magnet an den Hall-Sensor gehalten, daraufhin stoppen die Räder für 4 Sekunden.

Keksbus „beladen“

Code und Roh-Daten

#define Hall1 A4 benennt den PIN A4 in Hall1 um Hall1 ist der Hall-Sensor an der Seite

erster motor links int in1 = 9; vorwärts int in2 = 8; rückwärts zweiter motor rechts int in3 = 7; vorwärts int in4 = 6; rückwärts

int in5 = 15; control speed motor links ENA int in6 = 16; control speed motor rechts ENB

void setup() {

Serial.begin(9600);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);  //alle genannten PINs dienen zur Steuerung der Motoren und werden als outputs deklariert
pinMode(Hall1, INPUT);  //deklariert Hall1 also A4 als Input PIN für den ersten Hall Sensor

} void fahren() {

analogWrite(in5, 142);
analogWrite(in6, 142);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);

} void rueckfahren() {

analogWrite(in5, 142);
analogWrite(in6, 142);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

} void drehlinks() {

analogWrite(in5, 142);
analogWrite(in6, 160);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);

} void drehrechts() {

analogWrite(in5, 160);
analogWrite(in6, 142);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);

} void stop() {

digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);

} void loop() {

int hallsensor1 = analogRead(Hall1); //Info: Hallsensor1 gibt den Wert 1051 ohne erkanntes Magnetfeld und den Wert 0 bei erkanntem Magnetfeld an
Serial.println(analogRead(Hall1));
if (hallsensor1 <= 10) { // wenn der Hallsensor1 ein Magnetfeld erkennt halten die Motoren an
  stop();
  delay(4000);
} else if (hallsensor1 >= 11) { //bei keinem erkanntem Magnetfeld durch den Hallsensor1 
  fahren();
}

}

projektesose24/keksbus/projektdoku.1727728178.txt.gz · Zuletzt geändert: 2024/09/30 22:29 von TLWeschke