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

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

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'