getting pwm from attiny85
as topic says, i've written little program school project.
i'm code says, arduino should output 3 signals coming out a3 pwm output: 0, 123, 255
unfortunately, code works value on 150, , output 4.98v
it seems pwm outputting digital instead of analog
please help
i'm code says, arduino should output 3 signals coming out a3 pwm output: 0, 123, 255
unfortunately, code works value on 150, , output 4.98v
it seems pwm outputting digital instead of analog
please help
code: [select]
#include <tinyliquidcrystal_i2c.h> //i2c adattato per attiny85, pilota il display
#include <tinywirem.h> // wire adattato per attiny85
int pin_temp = a2; //pin di collegamento del piedino vout del sensore di temperatura
float temp = 0; //variabile in cui verrà memorizzata la temperatura rilevata
int tip120pin = a3; //variabile assegnata al transistor
liquidcrystal_i2c lcd(0x3f,16,2); //inizializzazione standard piattaforma i2c
int pinsensorpir = 1; //assegnando le variabili
int pinled = 5; //led lampeggiante per illuminare il garage
int valorsensorpir = 0; //imposto un valore basso al sensore pir
void setup()
{
lcd.init(); //impostazione del display lcd
lcd.backlight();
lcd.setcursor(0, 0); //sposto il cursore sulla prima riga (riga 0) e sulla prima colonna
lcd.print("temperatura:"); //stampo il messaggio 'temperatura:' sulla prima riga
analogreference(internal);
//definisco pin come input e output
pinmode(pinsensorpir,input);
pinmode(pinled,output);
pinmode(pin_temp,input);
pinmode(tip120pin,output);
delay(6000);
}
void loop() {
//calcolo temperatura
temp = 0;
for (int = 0; < 5; i++) { //esegue l'istruzione successiva 5 volte
temp += (analogread(pin_temp) / 9.31); //calcola la temperatura e la somma alla variabile 'temp'
}
temp /= 5; //calcola la media matematica dei valori di temperatura
if (temp <30) {
analogwrite(tip120pin,0);
lcd.setcursor(1, 1);
lcd.print("duty cycle 0% ");
} else if ((temp >=29) && (temp <35))
{ analogwrite(tip120pin,123);
lcd.setcursor(1, 1);
lcd.print("duty cycle 50% ");
} else {
analogwrite(tip120pin,250);
lcd.setcursor(1, 1);
lcd.print("duty cycle 100%");
}
/*visualizzo la temperatura sul display lcd =============================================*/
lcd.setcursor(12, 0); //sposto il cursore sulla prima colonna e sulla seconda riga
lcd.print(temp); //stampo sul display lcd la temperatura
lcd.print(" c"); //stampo uno spazio e il carattere 'c' sul display
/*===========================================*/
delay(1000); //ritardo di un secondo (può essere modificato)
//leggo il valore del sensore pir, che può assumere 1 o 2 valori
//1 quando rileva movimento e 0 quando non c'è movimento.
valorsensorpir = digitalread(pinsensorpir);
//verificando l'occorrenza di movimento
if (valorsensorpir == 1) {
accendi();
} else {
spegni();
}
}
void accendi() {
digitalwrite(pinled, high); //accendo il led
delay(6000); //tempo in cui il led rimane acceso
spegni();
delay(2000);
}
void spegni() {
digitalwrite(pinled, low); //spengo il led
}
i think i've solved it... had attached transistor non pwm port
Arduino Forum > Using Arduino > Programming Questions > getting pwm from attiny85
arduino
Comments
Post a Comment