#include <LiquidCrystal.h>
#include <leOS.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
leOS myOS;
const int button1=A3;
const int button2=A4;
const int button3=A2;
const int red=8;
const int green=9;
const int blue=10;
const int fotoresistenza=0;
const int termistore=1;
const int ledr=13;
const int ledb=6;
const int ledv=7;
const int led3=2;
int premuto1;
int premuto2;
int premuto3;
int punteggio;
int punteggio2;
int luce;
float valore;
float temperatura;
int tempo;
int velocita;
int a=0;
int b=0;
int c=0;
int d=0;
void setup()
{
pinMode(led3,OUTPUT);
pinMode(ledv,OUTPUT);
pinMode(ledr,OUTPUT);
pinMode(ledb,OUTPUT);
pinMode(green,OUTPUT);
pinMode(blue,OUTPUT);
pinMode(red,OUTPUT);
pinMode(fotoresistenza,INPUT);
pinMode(termistore,INPUT);
myOS.begin();
myOS.addTask(ledOn,500);
myOS.addTask(ledOff,1000);
myOS.addTask(schermo,425,PAUSED);
myOS.addTask(seriale,425,PAUSED);
lcd.begin(16,2);
Serial.begin(9600);
}
void loop()
{
luce=analogRead(fotoresistenza);
valore=analogRead(termistore);
velocita=10;
temperatura=valore*(23/675);
tempo=(1000/temperatura)*1;
a=analogRead(button1);
b=analogRead(button2);
c=analogRead(button3);
lcd.print("selezionare il");
lcd.setCursor(0,1);
lcd.print("programma");
while (! ((a>=600) || (b>=600) || (c>=600))){
a=analogRead(button1);
b=analogRead(button2);
c=analogRead(button3);
}
if(a>=600)
{
funzioneuno();
}
if(b>=600);
{
gioco();
}
if(c>=600)
{
gioco();
}
}
void foto()
{
if(luce<100)
{
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue,HIGH);
delay(5);
}
if(luce>100 && luce <200)
{
digitalWrite(blue,HIGH);
digitalWrite(red,LOW);
digitalWrite(green,LOW);
delay(5);
}
if(luce>200 && luce <300)
{
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue,HIGH);
delay(4);
}
if(luce>300 && luce<400)
{
digitalWrite(blue, LOW);
digitalWrite(red,LOW);
digitalWrite(green,HIGH);
delay(4);
}
if(luce>400 && luce<500)
{
digitalWrite(blue, LOW);
digitalWrite(red, LOW);
digitalWrite(green,HIGH);
delay(4);
}
if(luce>500 && luce<600)
{
digitalWrite(blue, LOW);
digitalWrite(red, LOW);
digitalWrite(green,HIGH);
delay(4);
}
if(luce>600 && luce<700)
{
digitalWrite(blue, LOW);
digitalWrite(green, LOW);
digitalWrite(red,HIGH);
}
if(luce>700 && luce<800)
{
digitalWrite(blue, LOW);
digitalWrite(green, LOW);
digitalWrite(red,HIGH);
}
if(luce>800);
{
digitalWrite(blue, LOW);
digitalWrite(green, LOW);
digitalWrite(red,HIGH);
}
}
void term()
{
if(temperatura<20 && temperatura >16)
{
digitalWrite(ledv,LOW);
digitalWrite(ledr,LOW);
digitalWrite(ledb,HIGH);
delay(tempo);
}
if(temperatura>20 && temperatura <25)
{
digitalWrite(ledb,LOW);
digitalWrite(ledr,LOW);
digitalWrite(ledv,HIGH);
delay(tempo);
}
if(temperatura>25)
{
digitalWrite(ledb,LOW);
digitalWrite(ledv,LOW);
digitalWrite(ledr,HIGH);
delay(tempo);
}
if(temperatura<15)
{
digitalWrite(ledr,HIGH);
digitalWrite(ledv,HIGH);
digitalWrite(ledb,HIGH);
delay(500);
}
}
void controllo()
{
foto();
term();
myOS.restartTask(schermo);
myOS.restartTask(seriale);
}
void seriale()
{
delay(velocita);
Serial.print("ram libera= ");
Serial.println(getFreeRam());
Serial.print("temperatura= ");
Serial.println(temperatura);
Serial.println();
}
void ledOn()
{
digitalWrite(led3,HIGH);
}
void ledOff()
{
digitalWrite(led3,LOW);
}
void schermo()
{
lcd.clear();
lcd.print("temp= ");
lcd.print(temperatura);
lcd.setCursor(0,1);
lcd.print("luce= ");
lcd.print(luce);
}
unsigned int getFreeRam()
{
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
void funzioneuno()
{
lcd.clear();
lcd.print("programma 1 cavo");
lcd.setCursor(0,1);
lcd.print("usb consigliato");
delay(2000);
while(d==0)
{
luce=analogRead(fotoresistenza);
valore=analogRead(termistore);
velocita=10;
temperatura=valore*0.031578947;
foto();
term();
myOS.restartTask(schermo);
myOS.restartTask(seriale);
}
}
void funzionedue()
{
lcd.clear();
lcd.print("programma 2 cavo");
lcd.setCursor(0,1);
lcd.print("usb obbligatorio");
delay(1000);
lcd.clear();
while(d==0)
{
luce=analogRead(fotoresistenza);
valore=analogRead(termistore);
velocita=10;
temperatura=valore*0.031578947;
seriale();
}
}