Go Down

Topic: errore in programma per misurare la pressione atmosferica (Read 219 times) previous topic - next topic

Redwin

Ciao a tutti,
sto cercando di usare un sensore di pressione atmosferica
http://www.mouser.com/ds/2/187/Liquid_Media_SSC_Analog-191223.pdf

vorrei collegare il sensore ad arduino 1 collegato ad una LCD keypad shield esattamente come ho trovato sul sito seguente:

http://hab.hampson.net.au/?p=378

il programma per effettuare la misurazione è il seguente:

Code: [Select]
#define ADC_HONEYWELL 0 // Arduino analog pin

const float factor = 0.2666666; //
const float base = 0.5;  //
int ADCnumber = 0;
float pvoltageDC = 0.0;
float pressure = 0.0;

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 );

void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor( 0, 0);  //top left
lcd.print("Pressure");
lcd.setCursor(8, 1);
lcd.print("psi");
lcd.setCursor( 11,0);
lcd.print("CHNSA");
}
void loop() {
getPressure();
delay(5000);
}

float getPressure(void) {
ADCnumber = analogRead(ADC_HONEYWELL);
Serial.print("ADC Read Number:");
Serial.println(ADCnumber);
pvoltageDC = ((float)ADCnumber / 1024)*5;
Serial.print("Voltage:");
Serial.println(pvoltageDC,3);
pressure =((pvoltageDC - 0.5 )/factor);
Serial.print("Pressure:");
Serial.print(pressure,3);
Serial.println(" psi");
Serial.println("");
lcd.setCursor( 0, 11);
lcd.print(pressure,3);

return pressure;
}



Per compilarlo sto usando IDE 1.05-r2, però appare il seguente errore : Stray '(' in program

Qualcuno potrebbe aiutarmi a capire che significa?

Grazie

Falcon

leo72

#1
Jul 16, 2014, 10:50 pm Last Edit: Jul 17, 2014, 09:52 pm by leo72 Reason: 1
E' un problema di codifica, questi sono gli errori:

Code: [Select]
sketch_jul16a:19: error: stray '\' in program
sketch_jul16a:19: error: stray '\' in program
sketch_jul16a:21: error: stray '\' in program
sketch_jul16a:21: error: stray '\' in program
sketch_jul16a:23: error: stray '\' in program
sketch_jul16a:23: error: stray '\' in program
sketch_jul16a:32: error: stray '\' in program
sketch_jul16a:32: error: stray '\' in program
sketch_jul16a:35: error: stray '\' in program
sketch_jul16a:35: error: stray '\' in program
sketch_jul16a:37: error: stray '\' in program
sketch_jul16a:38: error: stray '\' in program
sketch_jul16a:38: error: stray '\' in program
sketch_jul16a:40: error: stray '\' in program
sketch_jul16a:40: error: stray '\' in program
sketch_jul16a:41: error: stray '\' in program
sketch_jul16a:41: error: stray '\' in program
sketch_jul16a.ino: In function 'void setup()':
sketch_jul16a:19: error: 'u201cPressure' was not declared in this scope
sketch_jul16a:21: error: 'u201cpsi' was not declared in this scope
sketch_jul16a:23: error: 'u201cCHNSA' was not declared in this scope
sketch_jul16a.ino: In function 'float getPressure()':
sketch_jul16a:32: error: 'u201cADC' was not declared in this scope
sketch_jul16a:35: error: 'u201cVoltage' was not declared in this scope
sketch_jul16a:37: error: expected `)' before 'u2013'
sketch_jul16a:37: error: expected `)' before ';' token
sketch_jul16a:38: error: 'u201cPressure' was not declared in this scope
sketch_jul16a:40: error: 'u201d' was not declared in this scope
sketch_jul16a:41: error: 'u201c' was not declared in this scope

vedi che ti segnala tutti codici Unicode? Devi controllare lo sketch e correggere nei punti che ti dice, principalmente le virgolette -> "

Redwin

Caro Leo,
grazie per la risposta rapida.
Mi scuso se sono insistente
Quando  ho fatto copia ed incolla del programma  dal sito a IDE ho corretto passo per passo tutte le virgolette .
Dopo averle corrette tutte però la riga     37 :

   pressure =((pvoltageDC - 0.5 )/factor);

appare evidenziata in arancione .

Probabilmente si tratta di un errore " super evidente ", ma sto imparando il linguaggio C da autodidatta ed ancora non sono molto esperto.

Potresti aiutarmi a capire perchè "sta divisione",che è la chiave del programma ,presenta un errore ?
Grazie
Falcon




gpb01

No, è ancora un carattere invalido ed invisibile che ti stai trascinando dietro ...
... ho idea che tu abbia aperto i sorgenti con un editor RTF invece che con un normale editor TXT.

Per editare i programmi, NON USARE MAI cose come Write, Word o similari ... infilano nel codice un sacco di porcheria che poi non vedi (così come, su Mac, fa TextEdit) !

Comunque, hop preso il tuo codice, ho ripulito anche quella riga, ho aggiunto la libreria Wire che avevi dimenticato, l'ho riformattato (IDE -> Tools -> Auto Format) e ... compila senza errori :

Code: [Select]

#define ADC_HONEYWELL 0 // Arduino analog pin

const float factor = 0.2666666; //
const float base = 0.5;  //
int ADCnumber = 0;
float pvoltageDC = 0.0;
float pressure = 0.0;

// include the library code:
#include <Wire.h>
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 );

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor( 0, 0);  //top left
  lcd.print("Pressure");
  lcd.setCursor(8, 1);
  lcd.print("psi");
  lcd.setCursor( 11,0);
  lcd.print("CHNSA");
}
void loop() {
  getPressure();
  delay(5000);
}

float getPressure(void) {
  ADCnumber = analogRead(ADC_HONEYWELL);
  Serial.print("ADC Read Number:");
  Serial.println(ADCnumber);
  pvoltageDC = ((float)ADCnumber / 1024)*5;
  Serial.print("Voltage:");
  Serial.println(pvoltageDC,3);
  pressure = ((pvoltageDC - 0.5) / factor);
  Serial.print("Pressure:");
  Serial.print(pressure,3);
  Serial.println(" psi");
  Serial.println("");
  lcd.setCursor( 0, 11);
  lcd.print(pressure,3);

  return pressure;
}


... poi se fa o no quello che deve fare ... non ne ho idea  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

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

Redwin



Gentilissimo Guglielmo,

Ho copiato il programma dal sito che ho postato sopra e lo ho incollato direttamente su IDE, ma la libreria Wire manca anche sul sito.
Tra un paio di settimane riceveró un sensore che , peró , è differente da quello che è sul sito , su cui ho trovato il programma, perché il mio sensore  misura la pressione dell'acqua spinta da una siringa contro una membrana .
Sicuramente  dovrò correggere le variabili (  float factor e base)   che credo siano tratte dai datasheets  del sensore , ma spero di farcela.
Ti farò sapere se il programma funziona .
Ora non posso che ringraziarTi di cuore per l'aiuto che mi Hai dato.
Ciao
Falcon :)



Go Up