Problem bei Arduino-Programm

OP #3048218
Lesenswert?

Bei diesem Programm f. Arduino (zur Ansteuerung d. Pinpong-Platine)
zeigt die Arduino-Software nach den Kompillieren folgendes an: 
Sketchgröße
724Bytes. Ganzschöm klein, oder?
nach den übertragen macht das Programm nichts.
Wieso? (fragen z. Programm hier hin:)

int Leds[12];
int cnt;
void setup() {
  for(int p=2;p<10;p++) {
    pinMode(p, OUTPUT);
  }
}
void loop() {
  Matrix;
  for(int i=1;i<12;i++) {
  Leds[i]=512+i;
  }
}
void Matrix(void) {
  cnt++;
  if(cnt==13) cnt=1;
  if(cnt==1) digitalWrite(2, 0); else digitalWrite(2, 1);
  digitalWrite(3, 1);
  digitalWrite(3, 0);
  digitalWrite(4, 1);
  digitalWrite(4, 0);
  shiftOut(5, 6, 7, Leds[cnt]%256);
  int wert=Leds[cnt]/256;
  digitalWrite(9, wert%2);
  digitalWrite(8, (wert/2)%2);
}

void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);
  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }
    else {
      pinState= 0;
    }
    digitalWrite(myDataPin, pinState);
    digitalWrite(myClockPin, 1);
    digitalWrite(myDataPin, 0);
  }
  digitalWrite(myClockPin, 0);
}
Gast #3048239
Lesenswert?

Und eigentlich sollte das hier auch nicht funktionieren:
1
void Matrix(void) {
2
  // ...
3
  shiftOut(5, 6, 7, Leds[cnt]%256);
4
  // ...
5
}
6

7
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
8
  // ...
9
}

shiftOut() erwartet 3 Argumente, und du übergibst der Funktion 4.
Gast #3048284
Lesenswert?

R. Freitag schrieb:
> Das sollte der Compiler aber an der Signatur merken. Warum tut er das
> nicht?


Meine reine Bauchvermutung wäre:

- shiftOut() ist nach Matrix() definiert, einen Prototyp gibts auch 
nicht, dadurch fällt der Fehler nicht sofort auf.
- Bevor der gcc merkt, dass die Signaturen nicht zusammen passen, wurde 
Matrix bereits wegoptimiert.

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