Fehler Im Arduino code

Gast #3427296
Lesenswert?

Habe einen Code geschrieben der eine Tastenkombi mit zwei tastern in ein 
Arrray schreiben soll, und dieses stück für stück wieder ausgibt. Aber 
irgendwie bekomme ich nur Ausgaben wie:
L



2
ö



2
1
 const int buttonPinRot = 4;
2
const int buttonPinBlau = 5;
3
int rot = 0;
4
int blau = 0;
5
int bpr = buttonPinRot;  //PinShorts
6
int bpb = buttonPinBlau;
7
int i= 0;  
8
char prv = rot;        //Pinvariablen
9
char pbv = blau;
10
char Muster1[5] = {
11
  rot, blau, blau, rot, rot};
12
char Muster1vgl[]={
13
};
14
//
15
//=========================================Setup===============================================================================
16
//
17
void setup() {
18
  pinMode(buttonPinRot, INPUT); //PinModeDeclarations
19
  pinMode(buttonPinBlau, INPUT);
20
  Serial.begin(9600); // debug
21

22
}
23
//
24
//=========================================Loop===============================================================================
25
//
26
void loop() {
27
 for (int i=1; i < 6; i++){
28
    do {
29
      delay(20);
30
    }
31
    while((digitalRead(bpr) == LOW) && (digitalRead(bpb) == LOW));
32

33
      if (digitalRead(bpr == HIGH)){
34
        Muster1vgl[i] =  prv;
35
        //blink rote LED
36
        delay(10);
37
      }
38
    if (digitalRead(bpr == HIGH)){
39
      Muster1vgl[i] =  pbv;
40
      //blink blaue LED
41
      delay(10);
42
    }
43
  }
44
Serial.println (Muster1vgl[0]);
45
Serial.println (Muster1vgl[1]);
46
Serial.println (Muster1vgl[2]);
47
Serial.println (Muster1vgl[3]);
48
Serial.println (Muster1vgl[4]);
49

50
}
An Pin 4 und 5 digital sind Taster angeschlossen die 5 Volt auf die Pins 
geben. Zusätzlich hängen die Pins mit PDwiderstand an 0V
#3427355
Lesenswert?

Es sind noch einige Verbesserungen möglich.

Stephan Cacher schrieb:
> An Pin 4 und 5 digital sind Taster angeschlossen die 5 Volt auf die Pins
> geben. Zusätzlich hängen die Pins mit PDwiderstand an 0V
Die würde ich mit Pullup betreiben. Schau mal bei 
File/Examples/02Digital/DigitalInputPullup

prv und prb sind beide gleich (0)

Du wirfst Zeichen und Zahlen durcheinander
1
Muster1vgl[i] =  prv;
setzt das Ausgabezeichen auf ASCII 0, d.h. da wird nichts angezeigt.

Verwende doch mal z.B. 'R' und 'B'
1
Muster1vgl[i] =  'R';
#3427887
Lesenswert?

Endlich klappt es so wie ich es ungefähr wollte. Vielen Dank erstmal 
dafür.
Will ich jetzt aber mein neues Array mit meinem Original Array 
vergleichen kommt folgende Fehlermeldung:
1
#include <Bounce.h>
2
const int buttonPinRot = 4;
3
const int buttonPinBlau = 5;
4
int rot = 0;
5
int blau = 0;
6
int bpr = buttonPinRot;  //PinShorts
7
int bpb = buttonPinBlau;
8
int i= 0;  
9
const char Muster1[5] = {
10
  rot, blau, blau, rot, rot};
11
char Muster1vgl[5]={
12
};
13
//
14
//=========================================Setup===============================================================================
15
//
16
void setup() {
17
  pinMode(buttonPinRot, INPUT); //PinModeDeclarations
18
  pinMode(buttonPinBlau, INPUT);
19
  Serial.begin(9600); // debug
20

21
}
22
//
23
//=========================================Loop===============================================================================
24
//
25
void loop() {
26

27
  EingabeCheck1();
28
  Serial.println("Fertig");
29
  if ((Muster1[0] = Muster1vgl[0]) && (Muster1[1] = Muster1vgl[1]) && (Muster1[2] = Muster1vgl[2]) && (Muster1[3] = Muster1vgl[3]) 
30
  &&  (Muster1[0] = Muster1vgl[0])) {
31
    Serial.println("SUCCESS");
32
  }
33

34
}
Cache_ArrayChange.ino: In function 'void loop()':
Cache_ArrayChange:29: error: assignment of read-only location 
'Muster1[0]'
Cache_ArrayChange:29: error: assignment of read-only location 
'Muster1[1]'
Cache_ArrayChange:29: error: assignment of read-only location 
'Muster1[2]'
Cache_ArrayChange:29: error: assignment of read-only location 
'Muster1[3]'
Cache_ArrayChange:30: error: assignment of read-only location 
'Muster1[4]'

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren