Programmierung mit Arduino, Fehler?
Ich soll für die Schule einen Heißen Draht programmieren mit Arduino, dass bei der 1. und 2. Berührung ein grünes Licht an geht, und bei der Berührung ein Ton ertönt, bei der 3. Berührung ein gelbes Licht angeht und bei der Berührung ein Ton ertönt, bei der 4. Berührung ein Rotes Licht angeht und ein Ton ertönt bei der Berührung und ab der 5. Berührung ein das rote Licht an ist und der Ton durchgehend ertönt. Zudem soll ein Reset-Taster verbaut sein, der egal an welcher Stelle man ist, wieder das Spiel von Neu startet.
Das hätte ich bereits, nur leider klappt es noch nicht, kann mir jemand halfen
int LEDgr = 2;
int LEDge = 3;
int LEDro = 4;
int Draht = 5;
int ton = 6;
nt Reset = 7;
int x = 0;
boolean Start1 = LOW;
boolean Start2 = LOW;
void setup ()
{
pinMode (LEDgr, OUTPUT);
pinMode (LEDge, OUTPUT);
pinMode (LEDro, OUTPUT);
pinMode (ton, OUTPUT);
pinMode (Draht, INPUT);
pinMode (Reset, INPUT);
}
void loop()
{
if (digitalRead(Draht) == LOW)
{
Start1 == HIGH;
}
if (digitalRead(Draht)==LOW && (Start2 == LOW) && (Start1 ==HIGH))
{
x = x +1;
}
if (digitalRead(Draht)==LOW&&(Start1 == HIGH))
{
Start2 == HIGH;
}
if (digitalRead(Draht) == HIGH)
{
Start2 == LOW;
}
Start1 == LOW;
if (x<=2)
{
digitalRead(LEDgr, HIGH) ;
digitalRead(Ton, HIGH);
}
else {
if (x == 3)
{
digitalRead(LEDgr, LOW);
digitalRead(LEDge,HIGH);
digitalRead(Ton, HIGH);
}
else {
if (x == 4)
{
digitalRead(LEDge, LOW);
digitalRead(LEDro,HIGH); digitalRead(Ton, HIGH);
}
else {
if (x >= 5)
{
digitalRead(LEDro,HIGH);
digitalRead(ton,HIGH);
}
}
}
}
if (digitalRead(Reset) == LOW)
{
digitalWrite (LEDgr, LOW);
digitalWrite (LEDge, LOW);
digitalWrite (LEDro, LOW);
digitalWrite (ton,LOW);
x = 0;
}
}
2 Antworten
digitalRead(TON, HIGH) ergibt absolut keinen Sinn.
digitalWrite ist der Befehl.. und wenn kein aktiver piezo buzzer verwendet wird ist auch das falsch dann brauchst du den tone befehl.
Versuch mal:
int LEDgr = 2;
int LEDge = 3;
int LEDro = 4;
int Draht = 5;
int ton = 6;
int Reset = 7;
int x = 0;
boolean Start1 = LOW;
boolean Start2 = LOW;
void setup () {
pinMode(LEDgr, OUTPUT);
pinMode(LEDge, OUTPUT);
pinMode(LEDro, OUTPUT);
pinMode(ton, OUTPUT);
pinMode(Draht, INPUT);
pinMode(Reset, INPUT);
}
void loop() {
if (digitalRead(Draht) == LOW && Start1 == LOW) {
Start1 = HIGH;
}
if (digitalRead(Draht) == LOW && Start2 == LOW && Start1 == HIGH) {
x++;
}
if (digitalRead(Draht) == LOW && Start1 == HIGH) {
Start2 = HIGH;
}
if (digitalRead(Draht) == HIGH) {
Start2 = LOW;
}
Start1 = LOW;
if (x <= 2) {
digitalWrite(LEDgr, HIGH);
tone(ton, 1000);
} else if (x == 3) {
digitalWrite(LEDgr, LOW);
digitalWrite(LEDge, HIGH);
tone(ton, 1000);
} else if (x == 4) {
digitalWrite(LEDge, LOW);
digitalWrite(LEDro, HIGH);
tone(ton, 1000);
} else if (x >= 5) {
digitalWrite(LEDro, HIGH);
tone(ton, 1000);
}
if (digitalRead(Reset) == LOW) {
digitalWrite(LEDgr, LOW);
digitalWrite(LEDge, LOW);
digitalWrite(LEDro, LOW);
noTone(ton);
x = 0;
}
}
Ist da schon eingebaut, dass bei der 1. bis 4. Berührung der Ton nur an ist, wenn der Draht berührt wird, wusste nicht, wie ich das einbauen soll
den piezo Buzzer hatte ich vor zu verbauen