INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 3 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Neo's Roboter
01.10.2015, 13:41 (Dieser Beitrag wurde zuletzt bearbeitet: 01.10.2015 14:02 von Neoneo23.)
Beitrag #1
Neo's Roboter
Hallo Leute,

bin neu in das Thema Arduino eingestigen, habe bisher einiges recht erfolgreich mit Siemens Logo programmiert und umgesetzt.

hab mich auch hier einige Berichte gelesen.

jetzt habe ich mein erstes kleines Programm geschrieben, aber leider tut es so garnicht das was es sollHuh

Kann mir jemand helfen?? Bitte

Funktion soll sein:

Mein Auto soll nach vorne fahren bis es mit dem Bumper an einen Gegenstand stößt.
Bei stoß sollen die Mororen LI +Re ausgehen dann soll ein Umschalter die Motoren verpolen und dann ein stück zurück und dann wieder vorwerts. (Wendemanöver folgt noch, aber erstmal laufen lernen :shySmile

Hier mein Code:

int moli=2; //Antrieb Links auf pin2
int more=3; //Antrieb Rechts auf pin3
int zuruck=4; //Relais zum umschalten vor oder zurück Fahrt auf pin4
int bumper=5; //Bumper auf pin5
int bumperstatus=0; //Taster gedrückt oder nicht



void setup()
{
pinMode(moli,OUTPUT); //moli ist ein ausgang
pinMode(more,OUTPUT); //more ist ein ausgang
pinMode(zuruck,OUTPUT); //zuruck ist ein ausgang
pinMode(bumper,INPUT); //bumper ist ein eingang
}

void loop()
{
bumperstatus=digitalRead(bumper);

if(bumperstatus==HIGH) //wenn Bumper gedrückt
{
digitalWrite(moli,LOW); //Motor Links aus
digitalWrite(more,LOW); //Motor rechts aus
delay(500); //warten 0,5 sekunden
digitalWrite(zuruck,HIGH); //auf rückwerts schalten
delay(500); //warten 0,5 sekunden
digitalWrite(moli,HIGH); //Motor Links an
digitalWrite(more,HIGH); //Motor rechts an
delay(2000); //warten 2 sekunden
digitalWrite(moli,LOW); //Motor Links aus
digitalWrite(more,LOW); //Motor rechts aus
delay(500); //warten 0,5 sekunden
digitalWrite(zuruck,LOW); //auf vorwerts schalten
delay(500); //warten 0,5 sekunden
}
else
{
digitalWrite(moli,HIGH); //Motor Links an
digitalWrite(more,HIGH); //Motor rechts an
}
}

Das Relaisbord schaltet direkt beim einschalten den pin4 auf High ! aber warum? was hab ich falsch gemacht??

Vielen Dank im Voraus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2015, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 01.10.2015 14:10 von hotsystems.)
Beitrag #2
RE: Neo's Roboter
Na prima, der Fehler mit dem Semikolon wurde ja von dir beseitigt und scheint ja auch keine Fehlermeldung zu bringen.

Schade, eine Rückmeldung deinerseits wäre super gewesen. Dodgy

Dein jetziger Fehler ist, du setzt deinen Pin4 (zuruck) im Sketch auf HIGH.
Da ich nicht weis was der Sensor bringt, könnte das der Fehler sein.

Eine Rückmeldung wäre schon super. Das macht man so.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2015, 14:19
Beitrag #3
RE: Neo's Roboter
(01.10.2015 14:07)hotsystems schrieb:  Na prima, der Fehler mit dem Semikolon wurde ja von dir beseitigt und scheint ja auch keine Fehlermeldung zu bringen.

Schade, eine Rückmeldung deinerseits wäre super gewesen. Dodgy

Dein jetziger Fehler ist, du setzt deinen Pin4 (zuruck) im Sketch auf HIGH.
Da ich nicht weis was der Sensor bringt, könnte das der Fehler sein.

Eine Rückmeldung wäre schon super. Das macht man so.

Hallo hotsystems,

ja vielen Dank für Deine Hilfe von gestern Shy und auch Deine schnelle Antwort von Heute Shy

Der Pin 4 ist ein Bumper, wenn dieser betätigt wird also High wird weil er gedrückt wurde sollen die Motoren aus gehen ...

Sorry, ich bin absoluter Neuling und versuche es zu lernen, aber ich lerne auch schnell Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2015, 14:25
Beitrag #4
RE: Neo's Roboter
Ok, ich verstehe nicht, was der "bumper" normal liefert. Ist es ein offener Kollektor-Ausgang oder liefert er Spannung?
Hast du am Eingang einen PullUp-Widerstand?

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2015, 14:58
Beitrag #5
RE: Neo's Roboter
Der Bumper ist ein Taster (Schließer) der Pin 5 auf + schaltet wenn er betätigt wird. Sonst hab ich den pin5 mit 1kohm an Masse angeschlossen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2015, 15:06
Beitrag #6
RE: Neo's Roboter
Hallo Neoneo23,

(01.10.2015 13:41)Neoneo23 schrieb:  Das Relaisbord schaltet direkt beim einschalten den pin4 auf High ! aber warum? was hab ich falsch gemacht??

Der Zustand des Pin4 direkt nach dem Einschalten ist ja nicht eindeutig definiert. Versuche doch mal diesen in der Setup-Funktion eindeutig zu definieren. Also auf LOW setzen.

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2015, 15:29 (Dieser Beitrag wurde zuletzt bearbeitet: 01.10.2015 15:30 von hotsystems.)
Beitrag #7
RE: Neo's Roboter
(01.10.2015 14:58)Neoneo23 schrieb:  Der Bumper ist ein Taster (Schließer) der Pin 5 auf + schaltet wenn er betätigt wird. Sonst hab ich den pin5 mit 1kohm an Masse angeschlossen.

Das könnte so auch funktionieren.
Da die Atmega einen internen Pullup eingebaut haben, wird die Schaltfunktion meist anders herum genutzt, auch weil viele externe Module einen Ausgang mit offenem Kollektor haben. Ich würde den Eingang so konfigurieren, dass dieser auf "LOW" abfragt und mit einem Pullup-Widerstand versehen ist.

Z.B.
pinMode(pin, INPUT); // Anschluss als Eingang definieren
digitalWrite(pin, HIGH); // Pull Up Widerstand aktivieren

oder:

pinMode(pin, INPUT_PULLUP);

Das ist eindeutig HIGH und du schaltest mit dem Bumper dann auf LOW.

Du muss dann in deinem Sketch auf LOW abfragen!

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2015, 15:39
Beitrag #8
RE: Neo's Roboter
Ok. Das verstehe ich nicht. Pin 4 ist doch ein Ausgang, und pin 5 ein Eingang, an welcher Stelle soll ich jetzt was machen ? Sorry aber ich hab Euch doch gedroht, dass ich Anfänger bin ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  kleiner Roboter blichi 24 793 27.07.2016 14:02
Letzter Beitrag: torsten_156
  Roboter-Bau Probleme blebbens 8 383 12.07.2016 07:35
Letzter Beitrag: Binatone
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 551 06.07.2016 14:59
Letzter Beitrag: Binatone
  SR-04 + UNO + 4WD Roboter, Abstandsfehler Marc2014 25 2.853 21.09.2014 21:42
Letzter Beitrag: Thorsten Pferdekämper
  Roboter J4Ng0 2 1.535 21.07.2013 15:49
Letzter Beitrag: Snake8811

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste