Salve a tutti sono alle prime armi con arduino sto cercando di imparare e di migliorare il mio utilizzo di arduino, dico subito che è meno di una settimana che ci gioco vicino, quindi se dico cose o faccio cose talmente assurde da non esistere vi prego non mi linciate ma scusatemi ribadisco che sono un principiante in questo ambito, allora vi spiego il mio problema, sono riuscito ad usare un sensore della temperatura con uno schermo collegato vicino, prima con lo schermo interno e poi con lcd e lo stesso ho fatto con un sensore di luminosità facendo uscire sullo schermo led acceso e led spento, ovviamente avevo collegato un led che si accendesse e si spegnesse con la luce, ora il problema sta sorgendo quando cerco di fare entrambe le cose con lo schermo, cioè voglio far uscire sullo schermo lcd alla prima riga luce: accesa o spenta e sotto la temperatura, ci sto provando da 1 o 2 giorni ma niente da fare vi allego lo sketch sperando che qualcuno mi sappia dire dove sbaglio e perché sbaglio, inoltre vi allego anche gli errori che mi dà il software.
#include <OneWire.h>
#include <LiquidCrystal.h>
int x;
int DS18B20_Pin = A5;
OneWire ds(DS18B20_Pin);
LiquidCrystal lcd(12,11,5,4,3,2);
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(" Luce ");
lcd.setCursor(0,1);
lcd.print(Temperatura);
delay(3000);
}
void loop(){
float temperature = getTemp();
x=analogRead(A0);
Serial.println(x);
Serial.println(Temperature);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Luce:");
lcd.setCursor(6,0);
lcd.print(x);
lcd.setCursor(0,1);
lcd.print("Temp:");
lcd.setCursor(5,1);
lcd.print(Temperature);
delay(1000);
if (x>150 && x<500){
}
else if (x>0 && x<150)
{
lcd.setCursor(6,0);
lcd.print("Spento");
delay(2000)
}
if (x>150){
digitalWrite(13,HIGH);
lcd.setCursor(6,0);
lcd.print("Acceso");
delay(2000)
}
else if (x>150)
digitalWrite(1
}
float getTemp(){
byte data[12];
byte addr[8]
if ( !ds.search(addr))
{
ds.reset_search();
return -1000;
}
if (OneWire::crc8( addr, 7) != addr[7]{
Serial.println("CRC is not recognized");
return -1000;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Decide is not recognized");
return -1000;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1):
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for (int i = 0; i < 9; i++){
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB);
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}
Questi invece sono gli errori:
This report would have more information with
“Show verbose output during compilation”
enabled in File > Preferences.
Arduino: 1.0.6 (Mac OS X), Board: “Arduino Uno”
prova_temperatura_e_luce_.ino: In function ‘void setup()’:
prova_temperatura_e_luce_:19: error: ‘Temperatura’ was not declared in this scope
prova_temperatura_e_luce_.ino: In function ‘void loop()’:
prova_temperatura_e_luce_:29: error: ‘Temperature’ was not declared in this scope
prova_temperatura_e_luce_:51: error: expected;' before '}' token prova_temperatura_e_luce_:57: error: expected
;’ before ‘}’ token
prova_temperatura_e_luce_:61: error: expected)' before '}' token prova_temperatura_e_luce_:61: error: expected
;’ before ‘}’ token
prova_temperatura_e_luce_.ino: In function ‘float getTemp()’:
prova_temperatura_e_luce_:67: error: expected initializer before ‘if’
prova_temperatura_e_luce_:72: error: ‘addr’ was not declared in this scope
prova_temperatura_e_luce_:72: error: expected)' before '{' token prova_temperatura_e_luce_:82: error: 'addr' was not declared in this scope prova_temperatura_e_luce_:83: error: expected
;’ before ‘:’ token
Hardware usato è:
Arduino 1 V3
Sensore luminosità
led verde
Schermo da 16x2
Sensore temperatura ds18b20
potenziometro per schermo
e credo di aver detto tutto. Sistema usato macbook pro 2011 OS X Yosemite.
Spero che qualcuno mi aiuti e mi illumini e scusate se c’è qualche errore grossolano o peggio.