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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Erstes Projekt Ampelsteuerung
02.04.2020, 15:33
Beitrag #1
Erstes Projekt Ampelsteuerung
Hy,
dies hier ist mein allererster Beitrag in diesem Forum und zusätzlich auch mein erster Beitrag über das Thema Arduino überhaupt.

Kurz zu mir.
Ich bin Elektromeister und daher mit Elektrotechnik und, in groben Umfängen auch Elektronik vertraut. Auch SPS Programmierung ist für mich kein Neuland. Ganz im Gegensatz zum Arduino.

Ich habe mich, durch einen Arbeitskollegen motiviert mal etwas damit beschäftigt und mir einen Arduino Uno gekauft und auch das Programm installiert usw.
Zur Übung wollte ich nun ein Programm schreiben das eine Ampelanlage steuern soll.
Die art und weise soll sich mit der Zeit weiter entwickeln weshalb es hier nicht darum geht wie man es evtl. besser machen könnte, sondern erstmal darum wie ich das was ich bisher geschrieben habe zum laufen zu bringen.

Ich habe erstmal überlegt das der Grundzustand beider Ampeln Rot sein soll. Dann sobald ein Fussgänger auf die Taste drückt soll ein fester Ablauf kommen der von Rot nach Grün und wieder zurück schaltet. Das habe ich im Moment noch mit delays gemacht. Mir ist bewusst dass das nicht grade die schönste Lösung ist aber wie gesagt, da soll es im späteren Verlauf drum gehen.

Ich eröffne einfach mal die Diskussion indem ich meinen Code hier einfüge.
Ich habe das Problem das der Taster nicht sauber erkannt wird. Irgendwie wird es fehlinterpretiert obwohl ich mit Pulldown arbeite. Mit einem anderen Sketch funktioniert es besser also gehe ich davon aus das es einen Fehler im Programm gibt. Ich glaube zudem auch das ich einen Fehler im Seriellen Monitor gemacht habe.

Ich überlasse es jetzt aber mal euch zu schauen was da alles so im argen liegt.

Vielen Dank schonmal im Voraus.

Eike



Code:
/*  Ampelsteuerung
*   25.03.2020
*
*   Zwei Fahrzeugampeln und zwei Fussgaengerampeln
*/

  
  int TasterNord = 2;
  int TasterSued = 3;
  int StatusTasterNord;
  int StatusTasterSued;
  
  int NordRot = 7;
  int NordGelb = 8;
  int NordGruen = 9;
  int SuedRot = 10;
  int SuedGelb = 11;
  int SuedGruen = 12;


void setup() {
  
  Serial.begin(9600);
  
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);

  digitalWrite(NordRot, HIGH);
  digitalWrite(SuedRot, HIGH);
  
}


void RotnachGruen () {
  
  digitalWrite (NordRot, LOW);
  digitalWrite (NordGelb, HIGH);
  delay (3000);

  digitalWrite (NordGelb, LOW);
  digitalWrite (NordGruen, HIGH);
  delay (10000);

  digitalWrite (NordGruen, LOW);
  digitalWrite (NordGelb, HIGH);
  delay (3000);

  digitalWrite (NordGelb, LOW);
  digitalWrite (NordRot, HIGH);
  delay (10000);
  
}



void loop() {

  int StatusTasterNord = digitalRead(TasterNord);
  int StatusTasterSued = digitalRead(TasterSued);  

  if (StatusTasterNord == HIGH || StatusTasterSued == HIGH) {  
  
  RotnachGruen();

  }

  Serial.println(StatusTasterNord);
  Serial.println(StatusTasterSued);

  /*Serial.println(NordRot);
  Serial.println(NordGelb);
  Serial.println(NordGruen);
  Serial.println(SuedRot);
  Serial.println(SuedGelb);
  Serial.println(SuedGruen);*/
  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2020, 15:45 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2020 15:47 von hotsystems.)
Beitrag #2
RE: Erstes Projekt Ampelsteuerung
Der erste Fehler, der mir auffällt, du hast Pullup-Widerstände eingesetzt und fragst nach HIGH ab, da sieht dein Pin immer HIGH.
Du musst dann nach LOW abfragen und auch den Taster nach LOW (GND) schalten.

Und du verwendest unterschiedliche Pins für die Taster.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2020, 15:50
Beitrag #3
RE: Erstes Projekt Ampelsteuerung
Da Du INPUT_PULLUP verwendest, gehe ich davon aus, dass Deine Taster nach GND schließen. Dann ist aber gedrückt = LOW.

Du definierst Namen für Deine Pins, verwendest diese aber nicht konsequent. Warum?
Mehr als 256 Pins hast Du nicht, also genügt Byte. Die Pinbelegung ändert sich zur Laufzeit nicht, also solltest Du Pins als const deklarieren.

Code:
const byte TasterNord = 2;

Im nächsten Schritt wird Dir das delay auf die Füße fallen, weil dann auch die Taster nicht ordentlich erkannt wird. Während dieser Zeit macht der Arduino (fast) nichts, also auch keine Erkennung Deines Tasters.

Das mal zum Einstieg.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2020, 16:56
Beitrag #4
RE: Erstes Projekt Ampelsteuerung
Was meinst du damit das ich die Namen nicht konsequent verwende?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2020, 16:59 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2020 17:00 von hotsystems.)
Beitrag #5
RE: Erstes Projekt Ampelsteuerung
In der Definition gibst du den Namen die Pinnummer, im Setup nutzt du diese nicht, sondern verwendest du andere Pinnummern.

Einfach mal den Sketch richtig durchlesen.

Und dann schreibst du Pulldown, setzt aber Pullup ein.

Was stimmt denn nun ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2020, 17:01
Beitrag #6
RE: Erstes Projekt Ampelsteuerung
Ich habe tatsächlich etwas mit dem HIGH oder LOW herumgespielt und vergessen wieder zurück zu tauschen. Der Zusammenhang ist aber klar für mich. Das habe ich auch mittlerweile verbessert.

Das man konstante Variablen mit const deklariert habe ich auch schonmal gelesen allerdings nicht als byte. Da benötige ich noch ein bisschen Erklärung.

Das mit dem Delay ist wirklich das nächste Problem woran ich mich machen möchte sobald es bis hierhin läuft.

Sind die delays auch ein Problem in Bezug auf den Seriellen Monitor?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2020, 17:05 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2020 17:06 von HankfromHell.)
Beitrag #7
RE: Erstes Projekt Ampelsteuerung
(02.04.2020 16:59)hotsystems schrieb:  In der Definition gibst du den Namen die Pinnummer, im Setup nutzt du diese nicht, sondern verwendest du andere Pinnummern.

Einfach mal den Sketch richtig durchlesen.

Und dann schreibst du Pulldown, setzt aber Pullup ein.

Was stimmt denn nun ?

Alles klar. Jetzt hab Ichs gerafft mit den Pins. Es muss ein PullUp sein und natürlich nach LOW abgefragt werden. Danke dir.

Ist es so etwas besser?

Code:
/*  Ampelsteuerung
*   25.03.2020
*
*   Zwei Fahrzeugampeln und zwei Fussgaengerampeln
*/

  
  const int TasterNord = 2;
  const int TasterSued = 3;
  int StatusTasterNord;
  int StatusTasterSued;
  
  int NordRot = 7;
  int NordGelb = 8;
  int NordGruen = 9;
  int SuedRot = 10;
  int SuedGelb = 11;
  int SuedGruen = 12;


void setup() {
  
  Serial.begin(9600);
  
  pinMode(TasterNord, INPUT_PULLUP);
  pinMode(TasterSued, INPUT_PULLUP);
  
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);

  digitalWrite(NordRot, HIGH);
  digitalWrite(SuedRot, HIGH);
  
}


void RotnachGruen () {
  
  digitalWrite (NordRot, LOW);
  digitalWrite (NordGelb, HIGH);
  delay (3000);

  digitalWrite (NordGelb, LOW);
  digitalWrite (NordGruen, HIGH);
  delay (10000);

  digitalWrite (NordGruen, LOW);
  digitalWrite (NordGelb, HIGH);
  delay (3000);

  digitalWrite (NordGelb, LOW);
  digitalWrite (NordRot, HIGH);
  delay (10000);
  
}



void loop() {

  int StatusTasterNord = digitalRead(TasterNord);
  int StatusTasterSued = digitalRead(TasterSued);  

  if (StatusTasterNord == LOW || StatusTasterSued == LOW) {  
  
  RotnachGruen();

  }

  Serial.println(StatusTasterNord);
  Serial.println(StatusTasterSued);

  /*Serial.println(NordRot);
  Serial.println(NordGelb);
  Serial.println(NordGruen);
  Serial.println(SuedRot);
  Serial.println(SuedGelb);
  Serial.println(SuedGruen);*/
  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2020, 17:06 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2020 17:07 von hotsystems.)
Beitrag #8
RE: Erstes Projekt Ampelsteuerung
(02.04.2020 17:01)HankfromHell schrieb:  Ich habe tatsächlich etwas mit dem HIGH oder LOW herumgespielt und vergessen wieder zurück zu tauschen. Der Zusammenhang ist aber klar für mich. Das habe ich auch mittlerweile verbessert.
.....

Schön, das beantwortet aber nicht unsere Fragen und behebt auch nicht deine Fehler.

Du solltest dann auch deinen Sketch und die Beschreibung richtig stellen.

So funktioniert das nicht und wir wissen nicht, wie du es tatsächlich gemacht hast.

Ok...ok.
Hat sich überschnitten.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Projekt Triple-Handrad CNC Fridolein 2 342 24.04.2021 21:39
Letzter Beitrag: Fridolein
  Projekt Geisterfalle Geisterjäger 9 756 09.04.2021 18:27
Letzter Beitrag: Geisterjäger
  Modell Projekt Jan-Daniel99 21 1.233 09.03.2021 16:28
Letzter Beitrag: hotsystems
Wink Ein kleines Projekt für die Modelleisenbahn Arduino DMX Master 48 4.372 17.12.2020 14:31
Letzter Beitrag: Arduino DMX Master
  Projekt Stellwerk Arduino DB Nico 17 2.699 01.07.2020 13:27
Letzter Beitrag: DB Nico
  Projekt: Bewegunsmeldung per Lorawan Bodycocoon 23 2.990 19.05.2020 14:05
Letzter Beitrag: GuaAck
  Kleines Projekt mit RFID Stefu1987 31 3.827 11.05.2020 20:24
Letzter Beitrag: Retian
  Neuling mit Fragen für sein Projekt Inferno481 8 2.185 19.04.2020 20:53
Letzter Beitrag: Tommy56
  Blutiger Anfänger/ Projekt: Visuelle Takthilfe bencha 17 2.746 01.03.2020 17:45
Letzter Beitrag: Tommy56
  Projekt Haushaltsplaner Eisverkäufer 1 1.026 06.11.2019 13:00
Letzter Beitrag: Tommy56

Gehe zu:


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