Giocando con l'Attiny85

Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.

L'idea era (primaditutto limitata non conoscendo le varie possibilità) quella di vedere le letture senza dover essere collegato al pc. Adesso che mi hai messo la pulce nell'orecchio...
Può il tiny occuparsi (cosa che fa l'arduino uno adesso) tramite la libreria ultrasonic di rilevare la distanza e mandarla all'arduino uno per i calcoli vari e al display per la visualizzazione?
Può in alternativa gestire il compound eye e relativi movimenti dei servi?
Può in alternativa gestire tramite l' LM239D i motori dc?

Dico in alternativa perchè non so quantificare la potenza di calcolo/velocità che ho a disposizione, se facesse tutto meglio...
Mi rendo conto che ad ogni domanda cambia l'architettura del progettino ma è tutto in continua evoluzione, anzi se avete altri suggerimenti o link ben vengano.
Al momento il robottino con la sua LIPO è autonomo e funziona "benino" (vedi video anche se mal fatto http://arduino.cc/forum/index.php/topic,76264.0.html). Adesso cerco di imparare sviluppandolo / migliorandolo / ottimizzandolo etc...

MatteoG:

Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.

L'idea era (primaditutto limitata non conoscendo le varie possibilità) quella di vedere le letture senza dover essere collegato al pc. Adesso che mi hai messo la pulce nell'orecchio...
Può il tiny occuparsi (cosa che fa l'arduino uno adesso) tramite la libreria ultrasonic di rilevare la distanza e mandarla all'arduino uno per i calcoli vari e al display per la visualizzazione?
Può in alternativa gestire il compound eye e relativi movimenti dei servi?
Può in alternativa gestire tramite l' LM239D i motori dc?

Dico in alternativa perchè non so quantificare la potenza di calcolo/velocità che ho a disposizione, se facesse tutto meglio...
Mi rendo conto che ad ogni domanda cambia l'architettura del progettino ma è tutto in continua evoluzione, anzi se avete altri suggerimenti o link ben vengano.
Al momento il robottino con la sua LIPO è autonomo e funziona "benino" (vedi video anche se mal fatto http://arduino.cc/forum/index.php/topic,76264.0.html). Adesso cerco di imparare sviluppandolo / migliorandolo / ottimizzandolo etc...

ma a questo punto se devi fare tutte quelle cose usa un atmega328 in standalone! in pratica è il microcontrollore dell'arduino che una volta finito il progetto lo usi da solo e risparmi l'arduino...

Si si è vero che c'è anche questa possibilità però non mi bastano i pin con 1 328 solo...

Prima devi capire se la libreria è compatibile con il Tiny84.
Devi cioè verificare che non usi pin inesistenti sul Tiny, interrupt/timer non presenti, che riesca a starci nella memoria ma, soprattutto, che funzioni.

No, prima devo capire ancora come funziona una libreria e come si modifica... :frowning:
Così sto facendo il passo più lungo della mia gamba, mi mancano troppe nozioni ancora per continuare.

@Leo72
ho trovato gli ATtiny 84 e 85 in 2 versioni: a 10 MHz o 20 MHz. Credo di capire che per andare a 20 ( o 10) ho bisogno di componenti aggiuntivi (quarzo etc) , ma li posso usare anche così senza niente (magari a velocità ridotta)? Oppure devo prendere solo i max 10 MHz come da guida? :~

Prendi quelli da 20 MHz. Anche questi possono andare a 1 o 8 MHz senza componenti aggiuntivi. Se poi hai bisogno di maggior potenza, basta aggiungere un quarzo esterno.

Ok,grazie, sempre gentile.

Faccio riemergere questo topic cercando come al solito aiuto. Vorrei fare delle prove di trasmissione RF con gli ATtiny85 e in questa discussione Arduino Forum ho visto che modificando opportunamente la libreria VirtualWire è possibile farlo. Questo comporta il fatto di impostare i fuses per usare il micro con quarzo esterno 16MHz. Ho provato a ricavarmeli con fuse calc AVR® Fuse Calculator – The Engbedded Blog ma i valori che trovo sono diversi da quelli contenuti nella board.txt creata dal tipo del link. E' sufficiente che li setto come nella boards.txt e cioè low_fuses=0xFF, high_fuses=0xD7, extended_fuses=0xFF? Mi appello alla vostra saggezza..
Grazie.

E' sufficiente che li setto come nella boards.txt e cioè low_fuses=0xFF, high_fuses=0xD7, extended_fuses=0xFF

Sì, questi vanno bene. Puoi usare per il fuse Alto anche il valore $DF, che a differenza di $D7 non preserva il contenuto della EEPROM durante la flashatura del micro.

Per il fuse Esteso, prova con $FF oppure con il suo complementare $01. Il fuse esteso è un po' particolare, alcuni micro accettano il valore diretto (ossia 0 per 0 e 1 per 1) dei bit oppure il valore inverso (ossia 0 per impostare 1 e viceversa), dipende dal micro. Se programmando i fuse vedi che ti restituisce l'errore, prova l'altro valore.

Grazie Leo!

DevonMiles:
Grazie Leo!

Prego ma... funzionano? :sweat_smile:

Intanto sto raccogliendo nozioni, quando metterò in piedi una mezza basettina ti saprò dire. Se ce la faccio in settimana faccio due prove con la breadboard. Tutto nasce dalla richiesta di un mio amico che mi stressa perchè gli costruisca un radiocomando per pilotare la sua macchina del fumo. Ho pensato quindi agli attiny+moduli radio Aurel visto che ne ho una decina. Userei 2 pin in ingresso per 2 canali, 1 in output per il modulo radio tx e un altro output per led di segnalazione trasmissione. Piú o meno stessa cosa per rx con aggiunta di transistor + relè per chiudere il pulsante attivazione fumo.

Alcune cose:

  1. tra i pin che userai ti troverai il pin di reset, che è un pin un po' più "debole" degli altri in quanto a segnale elettrico, secondo datasheet.
  2. come ricevi i dati? Via seriale? Ricordati che l'Attiny non gestisce la seriale in HW e devi usare la SoftwareSeriale, che però blocca il codice in ricezione. La NewSoftSerial in ricezione NON funziona perché non è compatibile con l'Attiny85.
  1. Adesso che mi ci fai pensare, su delle prove che avevo fatto mi ricordo che c' era un pin che sembrava più debole. Grazie di avermelo ricordato. Bhè potrei evitare di usare il pin di RESET tanto nel conto dei pin 2(input)+2(output)+2(alimentazione)=6 pin usati, ne avanzerei ancora 2. Oppure lo potrei usare come input. ***
  2. Per ricevere i dati utilizzo un modulino rx radio 433MHz. Vorrei appunto provare la libreria VirtualWire modificata come ha fatto l' utente sul post Arduino Forum per vedere se riesco effettivamente a trasmettere e ricevere lo stesso dato. Alla fine del post ha scritto che con 2 Attiny85 la libreria funziona.

*** che scemo nella mia equazione ho dimenticato i due pin del quarzo :grin:

Tieni a mente un altro problema. Per usare il pin di reset devi disattivare questa funzione con i fuse. Ma ciò comporta che dopo la sua disattivazione NON puoi più flashare il micro né ripristinare il reset senza usare un programmatore ad alta tensione (12V). L'operazione non è impossibile (in rete c'è uno schema di un programmatore H/V per ripristini di emergenza di chip briccati) però devi tenerne conto.

Domanda: ma usare un Tiny84 (14 pin)? Avresti 9 linee I/O, tolti i pin dell'alimentazione (2), quelli del quarzo esterno (2) e quello di reset (1). L'ingombro rispetto al Tiny85 sarebbe di poco superiore.

Cavolo sto pin di RESET ora diventa il mio problema ]:slight_smile: . Per fortuna che me lo hai fatto presente se no chissà quanto tempo ci perdevo! L' idea di usare un 85 era perché li avevo già a disposizione, senza stare a riordinare materiale. Per quello che devo fare mi basta comunque un canale, per cui potrei eliminare proprio il pin di RESET e far fare tutto alla logica RX (vedi schema sotto). Eventualmente se mi dovesse servire un altro canale con qualche trick (tipo doppio click o pressione più lunga del pulsante) potrei spedire un' altra informazione.

START <-----------------------------------------------
| |
| no |
Dato RX ------------------------------------------->|
sì | |
| no |
Sto già sparando il fumo? ------> Spara fumo ----->|
| |
|sì |
Blocca fumo -------------------------------------------->|

Se non hai problemi di implementazione e ti trovi un banale SN7400, 01, 06, 14, usa due porte in serie al segnale e lo amplifichi in tensione e corrente; o al limite usa un TR, tenendo conto che devi invertire poi tu la logica del pin.
Se è solo "debole" risolvi senza problemi.

Sì sarebbe sperimentabile anche questa via, ma mi sa che il pin di RESET non lo disabilterò..non vorrei trovarmi incasinato dopo per la riprogrammazione.

Scusami, devo essermi espresso malissimo, sempre che tu abbia risposto a me :slight_smile:
Io NON parlo di disabilitare ma semplicemente di potenziare il pin, e quindi usarlo come tutti gli altri, solo integrando un componente che permetta di superare le limitazioni di questa "debolezza" che ancora non ho capito in cosa consiste, ecco perché non sono sicuro che il mio suggerimento sia idoneo.