attiny85

salve a tutti ,

vedendo il datasheet del attiny84 ( 14 pin) ho riscontrato che se si vuole far
pilotare un lcd 16 x 2 al limite per fare il solito voltmetro 0- 5Vcc mi pare che non e' possibile per mancanza di pin PWM giusto ?

in effetti per pilotare lcd ci vogliono n. 4 data bus line e RS ed E piu' le varie Vcc

amenoche bisogna usate l'ATmega328

help
armando

il tiny84 ha 4 pin pwm: 5-6-7-8

per i 4 pwm ho capito e per i due segnali E ed RS che normalmente sul scheda mega adk arduino stanno sempre sui pin PWM ? dove li collego ?

Potrei sbagliarmi, ma quei segnali NON sono gestiti in pwm, quindi li colleghi dove vuoi purché poi li dichiari come previsto dalla libreria

scusa quali i 4 del data bus line o i 2 del E ed RS ?

Tutti, a me non risulta che sia usato il pwm per gestire i sei segnali, il pwm viene usato a volte per gestire la retroilluminazione, tutti gli altri segnali sono gestiti in modo digitale standard e non pwm.

salve michele

quindi basta dire al codice i nomi delle porte , nel caso nel pilotaggio lcd ( i famosi 6 fili di caollegamento )li posso collegare tranquillamente al tiny84 per esempio

pin 3 data -___ ( i 4 data per pilotare lcd)
pin 4 data ____
pin 5 data _____
pin 6 data _____
pin 7 RS
pin 8 E

dichiarando il tutto nel setup del codice

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
con i numeri giusti

in piu il pin di ingresso che potrebbe essere il pin 0 ( analog input 0 AREF)
potrebbe andare ?

I numeri dei pin non credo corrispondano ai pin fisici, in genere sono indicati con PB0, PB1, ecc e possono anche essere messi in modo apparentemente disordinato, quindi se scrivi "1" non ti riferisci al pin fisico 1 del tiny84 ma al suo pin digitale PB1 che magari corrisponde al pin fisico 7. Come ingresso puoi usare quello che vuoi anche se non ho capito perché hai scritto AREF accanto a input 0; nello specifico significa che stai leggendo un segnale analogico....

http://arduino.cc/forum/index.php/topic,145531.0.html
sotto trovi il pinout :wink:

mi pare di aver capito

faccio un esempio ..

// ATTINY 84

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd([b]5, 4, 3, 6, 7, 8);    // iniliziazzazione lcd ( capita dal sottoscritto)[/b]

[b]// dichiarazione eventuale [b]ingresso es. PIN 1   [/b]Qualora si voglia usare come termometro o altro e relative formule[/b]

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("ciao ");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

ti ringrazio per l'aiuto

armando

chiudi la parentesi all'inizializzazione dell'LCD. :wink: (veniva fuori lo smile perché non aveva usato il tag code :wink: - NdLeo)
Allora se guardi il link che ti ha fornito MAD, la numerazione dei pin dovrebbe essere quella colorata in marrone (p.es. il pin fisico 5 del micro corrisponde al pin digitale 8, mentre il pin fisico 10 corrisponde, secondo come lo usi, al pin digitale 3 o al pin analogico A3); su quella base, collega i sei fili dove vuoi e poi dichiara i valori corrispondenti colorati in marrone.

ok . adesso ho capito .
ti ringrazio ti faro sapere l'esito delle prove/collegamenti

ciao

armando

problema ,
ecco il messaggio che e' uscito

portando arduino come ISP upload del programma lo fa senza errori
cambiando da mega adk etc.. ad ATTiny84 e Carica con un programmatore >>>
da questo messaggio .

l'unico particolare che ho notato e' che il ATTINY84 sul IDE invece e sul circuito integrato e' ATTINY84A

C:\Documents and Settings\marco\Desktop\arduino-1.0.3\libraries\LiquidCrystal/LiquidCrystal.h:82: error: conflicting return type specified for 'virtual size_t LiquidCrystal::write(uint8_t)'
C:\Documents and Settings\marco\Desktop\arduino-1.0.3\hardware\tiny\cores\tiny/Print.h:71: error: overriding 'virtual void Print::write(uint8_t)'

non so dirti, a me sembra una incompatibilità tra la libreria e l'IDE, forse è una vecchia versione, vediamo se passa Leo o un altro softwarista....

Michele dice bene, pare un problema software: con l'IDE 1.0 è stata riscritta la parte di codice che gestiva gli eventi print. Adesso sono tutti metodi della superclasse Serial.

armando, finora non mi pare tu lo abbia scritto ma che core stai usando per gestire i tuoi Attiny?
Io uso il core Tiny 0100-0015, e con l'IDE 1.0.3 ho compilato senza problemi gli esempi della LiquidCrystal allegati alla lib.

un attimo che mi aggiorno

l' ide e' 1.03

il core lho scaricato per aggiungere i vari attiny84 85 atmega328 etc , onestamente non ho fatto caso sulla versione


faccio un passo indietro ,
con gli amici del post che ho aperto mi hanno portato per gradi alla programmazione del attiny85
lampeggio led ho cambiato anche la porta (pin fisico ) ricompilando il tutto e caricando con risultati ottimi .


ora sono passato al attiny84 ma sta dando queshgli errori in copilazione e uploading
poco fa prima che mi scrivesse Leo ho cercato di aggiornare il ( penso ) core degli attiny etc... ma adesso non sta andando nenache da arduino a lcd sta dando errori in compilazione . quindi deduco che ho fatto male a caricare questo core ... cmq sto scaricando nuovamente arduino 1.0.3 , cmq mi serve un link sicuro per aggiornare la pagina dei TIPI DI ARDUINO ( penso si abbia commesso l'ulteriore errore )
vi ringrazio per la pazienza
a.

armando1966:
il core lho scaricato per aggiungere i vari attiny84 85 atmega328 etc , onestamente non ho fatto caso sulla versione

La domanda è: quale core?
Siccome ce ne sono almeno 2 in circolazione (3 considerando un core beta), potresti mettere il link di quello che stai usando?
Io ti consiglio il core Tiny:
http://code.google.com/p/arduino-tiny/

ora sono passato al attiny84 ma sta dando queshgli errori in copilazione e uploading
poco fa prima che mi scrivesse Leo ho cercato di aggiornare il ( penso ) core degli attiny etc... ma adesso non sta andando nenache da arduino a lcd sta dando errori in compilazione . quindi deduco che ho fatto male a caricare questo core ... cmq sto scaricando nuovamente arduino 1.0.3 , cmq mi serve un link sicuro per aggiornare la pagina dei TIPI DI ARDUINO ( penso si abbia commesso l'ulteriore errore )
vi ringrazio per la pazienza
a.

Alcune cose:

  1. non devi riscaricarti l'IDE, basta cancellare la cartella del core che ti sta dando problemi.
  2. i core aggiuntivi vanno messi in /arduino-xxx/hardware/ oppure in /cartella_degli_sketch/hardware. Se li metti da qualche altra parte, fai solo danni :wink:
  3. non capisco "la pagina dei tipi di arduino". Ti riferisci forse all'elenco che appare in Strumenti/Tipo di Arduino dell'IDE? Quell'elenco viene aggiornato in automatico dall'IDE in base alle schede che trova nei vari file boards.txt dei core che installi.

allora ,
la musica e cambiata ,
prima l'ide di arduino e stato solo copiato senza installazioni di installer di windows
adesso ho trovato la 1.0.3 con tanto di setup e l'ho installata
ho aggiunto tutti i modelli , dopodiche ho caricato la tiny0100 0015
dopodiche ho copiato la cartella tiny in \hardware\tiny ( sovrapposta) la tools 'lho lasciata

riepilogando errori caricando ISP non ne da
caricando il solo file del voltemetro tanto per fare una prova e cambiando i pin
del liquidcristal da solo questo errore ma ancora non funge ..

Hint: You can set the maximum SRAM memory of your board directly in the boards.txt file
avrdude.exe: stk500_getsync(): not in sync: resp=0x00

pero' ci stiamo avvicinando al risultato


#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5,4,3,2); // questi sono riferiti ai pin del TINY84

//#define ANA_IN_0 0
int potPin = 0;

float misura_di_tensione ;
float misura_corrente ;
float volt ;
float ampere ;
int R = 100 ;
float watt ;

void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
//volt=(misura_di_tensione*5/1023);
}

void loop() {

misura_di_tensione = analogRead(potPin);
//lcd.println(misura_di_tensione);
//lcd.println(misura_corrente);
//lcd.clear();

lcd.setCursor(0, 0);
volt= (misura_di_tensione*5/1023);
lcd.print(volt);
// I = V/R Calcolo corrente
lcd.print(" V");
lcd.setCursor(0,1);
ampere= (volt/R );
lcd.print(ampere, 3); // visulaizza i numeri in virgola mobile 3 cifre dopo la virgola
lcd.print(" A");
lcd.setCursor (9 , 0);
watt= float (volt * ampere);
lcd.print(watt, 3);
lcd.print(" W");

delay(100);
}

armando1966:
ho trovato la 1.0.3 con tanto di setup e l'ho installata

Puoi indicare dove hai scaricato la versione con il setup? :roll_eyes: