ciao a tutti sono Fabrizio nuovo iscritto del forum!!!
innanzitutto complimenti per la passione che mettete nei vostri progetti e soluzioni!!!
mi sono avvicinato da molto poco al mondo arduino incuriosito dalle mille funzionalità,
purtroppo non sono pratico nella programmazione!!! per iniziare ho realizzato questo:
e successivamente il codice è stato modificato tramite aiuto con :
#include <LiquidCrystal.h>
//source: http://www.electroschematics.com/9540/arduino-fan-speed-controlled-temperature/
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int tempPin = A1; // the output pin of LM35
int fan = 11; // the pin where fan is
int led = 8; // led pin
int temp;
int tempMin = 20; // the temperature to start the fan
int tempMax = 24; // the maximum temperature when fan is at 100%
int fanSpeed;
int fanLCD;
int timer;
void setup() {
pinMode(fan, OUTPUT);
pinMode(led, OUTPUT);
pinMode(tempPin, INPUT);
lcd.begin(16, 2);
}
int timer(){
digitalWrite(fan, LOW);
delay (1000);
digitalWrite(fan, HIGH);
delay (1000);
}
#define SPEED_MIN 15 // impostare valori adeguati tra 0 e 255
#define SPEED_MAX 255
void loop() {
temp = readTemp();
if (temp < tempMin) {
analogWrite(fan, SPEED_MIN);
} else if ((temp >= tempMin) && (temp <= tempMax)) {
fanSpeed = map(temp, tempMin, tempMax, 32, 255);
fanLCD = map(temp, tempMin, tempMax, 0, 100);
analogWrite(fan, fanSpeed);
digitalWrite(led, LOW);
} else {
analogWrite(fan, SPEED_MAX);
digitalWrite(led, HIGH);
}
lcd.print("TEMPERATURE: ");
lcd.print(temp); // display the temperature
lcd.print("C");
lcd.setCursor(0, 1); // move cursor to next line
lcd.print("FANS DUTY: ");
lcd.print(fanLCD); // display the fan speed
lcd.print("%");
delay(1000);
lcd.clear();
}
int readTemp() { // get the temperature and convert it to celsius
temp = analogRead(tempPin);
return temp * 0.48828125;
}
funziona abbastanza bene, vorrei inserire un timer che attivi, indipendentemente dalla temperatura, e quindi "svincolato" dal software, il pin 11 dove ho collegato la ventola per un tempo di x minuti ogni x ore. potete aiutarmi?
leggevo delle funzioni delay e millis.
da quello che ho capito serve un interrupt (non uccidetemi se dico stupidaggini non sono molto pratico!!!!) che appunto inserisca una funzione a se, non dipendente dal resto del software
grazie in aticipo a tutti!!