Go Down

Topic: Arduino ShiftOut tramite porta seriale - Help! (Read 1 time) previous topic - next topic


leo72

Ascolta, Se io metto un Serial.write(1) sul monitor seriale dell'Arduino leggo un carattere senza senso, corrispondente al byte di valore 1, non leggo 0b00000001.
Quindi io temo che il tuo programma lato PC non spedisca i dati in formato byte.

Elimina per ora questo problema e modifica il tuo programma così:

Code: [Select]
void loop() {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 0b10101010); 
  digitalWrite(latchPin, HIGH);
  delay(500);
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 0b01010101); 
  digitalWrite(latchPin, HIGH);
  delay(500);
}


Ti deve accendere i led alternativamente. Se così funziona, il problema sta nella comunicazione fra PC ed Arduino, altrimenti hai sbagliato i collegamenti dei registri all'Arduino.

toti94

#17
May 25, 2013, 05:27 pm Last Edit: May 25, 2013, 05:29 pm by toti94 Reason: 1
Si così funziona bene XD
Quindi cosa sbagliavo?
cioè se invio la sequenza tramite seriale, non devo scrivere così?
Code: [Select]
shiftOut(dataPin, clockPin, MSBFIRST, Serial.read());

leo72

Probabilmente tu non invii il dato in formato numerico.
Io non conosco PHP per cui non so come ragiona. Se scrivi print(1) sulla seriale esso cosa spedisce? una stringa di valore "1" oppure un byte di valore 1?

toti94

si in effetti in php io invio una stringa "0bxxxxxxxx" non invio numeri

leo72


si in effetti in php io invio una stringa "0bxxxxxxxx" non invio numeri

Sono 2 pagine che te lo sto dicendo....  :smiley-sweat: :smiley-sweat:

Testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up