Pages: [1] 2   Go Down
Author Topic: [RISOLTO]stesse istruzioni ma in uno sketch da errore  (Read 1218 times)
0 Members and 1 Guest are viewing this topic.
piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 684
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
mi aiutate a capire dove sbaglio, ho le stesse istruzioni in uno sketch ma in uno ho un errore e nell'altro no, in pratica il #define funziona solo in questo
Code:
//pin per shiftout 74hc595
#define latchPinOUT 11//Pin connected to ST_CP of 74HC595
#define clockPinOUT 12//Pin connected to SH_CP of 74HC595
#define dataPinOUT 10//Pin connected to DS of 74HC595
...
byte Var1;

void setup()
{
  //set pins to output so you can control the shift registers
  //shiftout define pin modes
  pinMode(latchPinOUT, OUTPUT);
  pinMode(clockPinOUT, OUTPUT);
  pinMode(dataPinOUT, OUTPUT);
...
Var1=B00000000;
}

void loop()
{
...
Var1=B00000000;
  digitalWrite(latchPinOUT, LOW);                         //Pull latch LOW to start sending data
  shiftOut(dataPinOUT, clockPinOUT, MSBFIRST, Var1); //Send the data byte 1
  digitalWrite(latchPinOUT, HIGH);                        //Pull latch HIGH to stop sending data
...
}

questo è quello che mi da errore
Code:
//pin per shiftout 74hc595
#define latchPin 11//Pin connected to ST_CP of 74HC595
#define clockPin 12//Pin connected to SH_CP of 74HC595
#define dataPin 10//Pin connected to DS of 74HC595

int ritardo;
byte Var1;

void setup()
{
  //set pins to output so you can control the shift register
  pinMode(latchPin,OUTPUT);
  pinMode(clockPin,OUTPUT);
  pinMode(dataPin,OUTPUT);
  ritardo=100;
  Var1=B00000000;
  }

void loop()
{  
delay(200);
  digitalWrite(latchPin,LOW);
  shiftOut(dataPin,clockPin,MSBFIRST,Var1);  
  digitalWrite(latchPin,HIGH);
  delay(ritardo);
 }

questo è il messaggio di errore ma non lo comprendo

Code:
In file included from rotazione_pinza_shift.ino:22:
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:111: error: expected ',' or '...' before numeric constant
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:112: error: expected ',' or '...' before numeric constant
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h: In function 'void loop()':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:111: error: too many arguments to function 'void shiftOut(uint8_t)'
rotazione_pinza_shift:40: error: at this point in file

ho sostituito il #define con int e funziona

grazie
stefano
« Last Edit: July 04, 2013, 01:39:54 pm by stefa24 » Logged


piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 684
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

fatto, ma senza risultato
questa è la riga evidenziata dall'IDE
Code:
  shiftOut(dataPin,clockPin,MSBFIRST,Var1);   

stefano
Logged


Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5996
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... anche se la commenti il problema rimane ... stai usando la 1.0.5 ? perché ho provato anche io e da lo stesso problema ...  smiley-roll

Se invece si sostituiscono le #define con int e si assegna il valore ... non da alcun errore ...  smiley-roll smiley-roll smiley-roll

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 684
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si uso la 1.0.5, con int invece funziona, ma ho notato che basta sostituire
Code:
#define clockPin 12//Pin connected to SH_CP of 74HC595
con
Code:
int clockPin=12;//Pin connected to SH_CP of 74HC595

e non ho più errore, però rimane la domanda perchè il primo sketch non da errori

stefano
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non commentate i #define, c'è un bug nell'IDE.

@Guglielmo.
Ne avevamo già parlato.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 684
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

del bug non sapevo, però non capisco perché il primo sketch (scritto con 1.0.4) non da errore

stefano
Logged


Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5996
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
@Guglielmo.
Ne avevamo già parlato.

Paolo, avevo già provato ... da ugualmente errore, non c'entrano nulla i commenti ...  smiley-twist

Copia il codice e fai la prova (con l'IDE 1.0.5) ... l'unico modo per compilarlo è non usare le #define ...  smiley-eek

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 5018
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hai fatto la define di due parametri della shiftOut() presente in Arduino.h,  clockPin e dataPin  
prova ad aggiungere al nome anche solo una x   xclockPin e xdataPin

Arduino.h riga 111:
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);

Nel secondo sketch il file Arduino.h forse viene incluso dopo le tue #define.

Però nei file .h lasciare il nome dei parametri no ha senso, secondo me.
Al compilatore basta il tipo:
void shiftOut(uint8_t , uint8_t , uint8_t , uint8_t );
« Last Edit: July 04, 2013, 01:33:46 pm by nid69ita » Logged

my name is IGOR, not AIGOR

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22995
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho scoperto l'inghippo!
Dovete dirlo, sono trooooppo forte  smiley-wink

Il problema è qui:
#define latchPinOUT 11//Pin connected to ST_CP of 74HC595
#define clockPinOUT 12//Pin connected to SH_CP of 74HC595
#define dataPinOUT 10//Pin connected to SH_CP of 74HC595

OUT tutto maiucolo probabilmente è un'altra define messa chissà dove.
Se mettete minuscolo (sostituendo ovviamente nel codice):
#define latchPinOut 11//Pin connected to ST_CP of 74HC595
#define clockPinOut 12//Pin connected to SH_CP of 74HC595
#define dataPinOut 10//Pin connected to SH_CP of 74HC595

Compila senza errori.
Ecco un altro motivo per NON usare le define in questi casi perché non sai mai che catena di sostituzione ti attiva il compilatore.
Logged


piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 684
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

fatto adesso funziona, devo imparare ancora molto

grazie

stefano
Logged


ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 5018
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa @leo ,  ma è quello senza OUT che da errore perchè    latchPin e dataPin sono parametri della shiftOut
Logged

my name is IGOR, not AIGOR

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 684
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@leo, a me piace usare il #define, perché la vedo molto legata alla definizione di un pin

stefano
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22995
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

nid69, sei trooooppo forte  smiley-sweat
Ho mescolato gli sketch ed i problemi ah ah ah  smiley-yell
Mi vergogno come un cane  smiley-yell smiley-yell
Logged


ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 5018
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@leo, a me piace usare il #define, perché la vedo molto legata alla definizione di un pin
stefano

Ne abbiamo discusso in altro thread.
Con la define il compilatore sostituisce brutalmente la parola con quello che definisci e puoi incorrere in molti problemi, ad esempio
quello che è capitato a te.
Poi un altro vantaggio della const byte pinXX=10;    è che dichiari il tipo
Tieni conto che la const NON è interpretata dal compilatore come variabile ma fa praticamente come la define, sostituisce ma in maniera più controllata.
Anche a me piaceva più la define, da vecchio programmatore di C, ma ho imparato a usare la const, grazie al forum.

P.S.  @leo  e figurati, nella fretta, capita.
Però perchè nelle varie .h del core oltre ai tipi dei parametri han lasciato il nome del parametro? Al compilatore non serve. Serve all'IDE ?
« Last Edit: July 04, 2013, 01:49:28 pm by nid69ita » Logged

my name is IGOR, not AIGOR

Offline Offline
Sr. Member
****
Karma: 4
Posts: 378
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Appunto, per questo è meglio const.
Logged

Pages: [1] 2   Go Up
Jump to: