Salve, sono riuscito a ingranare il meccanismo di Arduino dopo varie letture del manuale e come primo programmino da solo ho voluto provare a modificare e ampliare il progetto 03 del manuale.
Ho aggiunto un altro led e un "cicalino"( il coso che fa rumore).
Il codice originario è:
const int sensorPin = A0;
const float baselineTemp = 20.0;
void setup() {
Serial.begin(9600); //apri una porta seriale
for(int pinNumber = 2; pinNumber<=8; pinNumber++){
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
}
void loop(){
int sensorVal = analogRead(sensorPin);
Serial.print("Sensor Value: ");
Serial.print(sensorVal);
// converti la lettura ADC in tensione
float voltage = (sensorVal/1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");
// converti la tensione in temperatura
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
if(temperature < baselineTemp){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}else if(temperature >= baselineTemp+2 &&
temperature < baselineTemp+4){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}else if(temperature >= baselineTemp+4 &&
temperature < baselineTemp+6){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}else if(temperature >= baselineTemp+6 &&
temperature < baselineTemp+8){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
delay(1000);
}
e questo questo quello modificato da me:
int sensorValue;
int sensorLow = 1023;
int sensorHigh = 0;
const int sensorPin = A0;
const int ledPin = 13;
const float baselineTemp = 20.0;
void setup() {
Serial.begin(9600); //apri una porta seriale
for(int pinNumber = 2; pinNumber<=8; pinNumber++){
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
while (millis() < 5000) {
sensorValue = analogRead(A0);
if (sensorValue > sensorHigh){
sensorHigh = sensorValue;
}
if (sensorValue < sensorLow) {
sensorLow = sensorValue;
}
}
}
void loop(){
int sensorVal = analogRead(sensorPin);
Serial.print("Sensor Value: ");
Serial.print(sensorVal);
// converti la lettura ADC in tensione
float voltage = (sensorVal/1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");
// converti la tensione in temperatura
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
if(temperature < baselineTemp){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(8, LOW);
}else if(temperature >= baselineTemp+2 &&
temperature < baselineTemp+4){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(8, LOW);
}else if(temperature >= baselineTemp+4 &&
temperature < baselineTemp+6){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(8, LOW);
}else if(temperature >= baselineTemp+6 &&
temperature < baselineTemp+8){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(8, LOW);
}else if(temperature >= baselineTemp+8){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
sensorValue = analogRead(A0);
int pitch =
map(sensorValue,sensorLow,sensorHigh, 400, 4000);
tone(8, pitch,20);
}
delay(1000);
}
La mia idea consisteva nel rendere il termometro proposto dal libro più accurato e aggiungere più led e un sensore sonoro. Qui sotto allego la foto di come dovrebbe essere il circuito; ho solo un problema con il codice da usare
Scusate se ho sbagliato categoria e per il titolo poco chiaro.