Offline
Jr. Member
Karma: 0
Posts: 73
|
 |
« on: January 14, 2013, 10:49:07 am » |
quest'estate ho smontato un decoder che si era rotto, al suo interno ho trovato un display composto da 4 bcd 7 segmenti controllati da un attiny2313. nella parte bassa della scheda ci sono 8 pin out a cui sono collegati 5 fili e facendo delle verifiche con il tester ho visto che c'è un 5volt, massa, slc tramite resistenza da 100ohm, sda tramite una resistenza da 100ohm e reset con un condensatore 10uF e una resistenza da circa 10kohm. ora la domanda è, che ci potrei fare?? allego 2 foto che ho fatto al display
|
|
|
|
|
Logged
|
|
|
|
|
Dueville (VI)
Online
Edison Member
Karma: 15
Posts: 1050
http://cesarecacitti.wordpress.com/
|
 |
« Reply #1 on: January 14, 2013, 11:01:15 am » |
quest'estate ho smontato un decoder che si era rotto, al suo interno ho trovato un display composto da 4 bcd 7 segmenti controllati da un attiny2313. nella parte bassa della scheda ci sono 8 pin out a cui sono collegati 5 fili e facendo delle verifiche con il tester ho visto che c'è un 5volt, massa, slc tramite resistenza da 100ohm, sda tramite una resistenza da 100ohm e reset con un condensatore 10uF e una resistenza da circa 10kohm. ora la domanda è, che ci potrei fare?? allego 2 foto che ho fatto al display
Potresti riprogrammare l'attiny per avere una comunicazione seriale con un eventuale arduino che lo controlla via seriale
|
|
|
|
|
Logged
|
Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield. Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586
|
|
|
|
Lamezia Terme
Offline
Shannon Member
Karma: 386
Posts: 10240
Le domande di chi vuol imparare rappresentano la sua sete di sapere
|
 |
« Reply #2 on: January 14, 2013, 11:09:15 am » |
certamente non puoi farci il caffé, ma visto che è già bell'e pronto per la comunicazione seriale (contrariamente a quello che dice cecé), puoi provare a collegarlo ad un altro micro, p.es. ad un Arduino (pin A4-A5) e mandargli qualche "cifra" per vedere come reagisce, il RESET lo devi usare con un impulso tipo LOW.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 73
|
 |
« Reply #3 on: January 14, 2013, 11:14:08 am » |
per riprogrammarlo devo collegare i pin tx e rx dell'attiny ad arduino giusto?? questi due pin sono collegati al display
|
|
|
|
|
Logged
|
|
|
|
|
Lamezia Terme
Offline
Shannon Member
Karma: 386
Posts: 10240
Le domande di chi vuol imparare rappresentano la sua sete di sapere
|
 |
« Reply #4 on: January 14, 2013, 11:16:54 am » |
se stai chiedendo a cecé ti risponde lui, personalmente ti ho consgliato di provare ad usarlo così com'è, potrebbe funzionare senza toccare l'attiny...
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 73
|
 |
« Reply #5 on: January 14, 2013, 11:23:57 am » |
michele per reset cosa devo fare?? devo metterlo a massa?? facciamo prima come dici te, così vediamo come si comporta! sul decoder visualizzava il numero dei canale e qualche scritta come "SCAN" durante la ricerca dei canali
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #6 on: January 14, 2013, 11:28:30 am » |
facciamo prima come dici te, così vediamo come si comporta! sul decoder visualizzava il numero dei canale e qualche scritta come Se è realmente controllato tramite I2C, molto probabile, non ottieni nulla inviando valori a casaccio, l'I2C ha un ben preciso protocollo che come prima cosa richiede di conoscere l'address del device, questa cosa puoi facilmente verificarla utilizzando lo sketch I2Cscanner che ti dice l'address di tutti i device connessi sul bus. Una volta che hai trovato l'address allora puoi provare ad inviare dei byte al display per vedere come reagisce, tieni presente che quasi sicuramente richiede l'invio di almeno due byte codificati come bcd (= 4 cifre display).
|
|
|
|
|
Logged
|
|
|
|
|
Lamezia Terme
Offline
Shannon Member
Karma: 386
Posts: 10240
Le domande di chi vuol imparare rappresentano la sua sete di sapere
|
 |
« Reply #7 on: January 14, 2013, 11:40:33 am » |
Se visualizza sia numeri che lettere si può provare con la codifica standard ascii, mandano un byte per il controllo di ogni signola cifra. Oppure come dici tu, usare 4 bit per ogni cifra, per usarlo solo come numerico. Ovvio che bisogna tentare di interpretare il protocollo implementato. Vito, devi cercare uno sketch che preveda la comunicazione I2C e come dice Astro, uno scanner (software) che legga l'identificativo del display, che dovrai inserire nella comunicazione sul bus I2C, in modo che sia ben chiaro che il destinatario dei dati è lui. Il reset per ora lo puoi lasciare NON collegato.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 73
|
 |
« Reply #8 on: January 14, 2013, 12:00:46 pm » |
allora appena collegato il tutto come da foto, caricato su arduino i2c_scanner e dal monitor seriale mi dice "I2C divice found at address 0x38 ! done". quindi l'indirizzo del display è "0x38". Il filo viola è slc sul display e quello grigiom sda sul display. avete per caso uno sketch per provare a far visualizzare qualcosa??
|
|
|
|
|
Logged
|
|
|
|
|
Lamezia Terme
Offline
Shannon Member
Karma: 386
Posts: 10240
Le domande di chi vuol imparare rappresentano la sua sete di sapere
|
 |
« Reply #9 on: January 14, 2013, 12:08:23 pm » |
cerca sul playground, in fondo ti basta una semplice riga di invio dati in questo formato
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #10 on: January 14, 2013, 12:12:07 pm » |
allora appena collegato il tutto come da foto, caricato su arduino i2c_scanner e dal monitor seriale mi dice "I2C divice found at address 0x38 ! done". quindi l'indirizzo del display è "0x38".
Il fatto che I2Cscanner ha trovato l'address ti conferma che si tratta di un device I2C, adesso devi solo provare ad inviargli dati scrivendo sulla I2C utilizzando quell'address. Io come prima prova gli manderei due byte contenenti i valori 0x01 0x02, se il display funziona come penso dovrebbe visualizzare "0102".
|
|
|
|
|
Logged
|
|
|
|
|
Lamezia Terme
Offline
Shannon Member
Karma: 386
Posts: 10240
Le domande di chi vuol imparare rappresentano la sua sete di sapere
|
 |
« Reply #11 on: January 14, 2013, 12:18:27 pm » |
lui vorrebbe la sintassi per l'invio, credo.... 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 73
|
 |
« Reply #12 on: January 14, 2013, 12:31:22 pm » |
lui vorrebbe la sintassi per l'invio, credo....  anche se sarebbe bello avere una sintassi provo a guardare nel playground per vedere se trovo qualcosa
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 73
|
 |
« Reply #13 on: January 14, 2013, 01:20:23 pm » |
#include <Wire.h> byte val = 0; void setup() { Wire.begin(); // join i2c bus } void loop() { Wire.beginTransmission(56); // transmit to device #44 (0x2c) // device address is specified in datasheet Wire.write(val); // sends value byte Wire.endTransmission(); // stop transmitting val++; // increment value if(val == 64) // if reached 64th position (max) { val = 0; // start over from lowest value } delay(5); } allora ho preso questo sketch dalla playground e guardando una tabella ascii presa su internet ho capito che per comunicare con il display dovevo mettere "56" per avere l'indirizzo "0x38" del display. ora il display si accende ed emette valori a casaccio che cambiano in continuazione. il pin reset è staccato. vi posto un'altra foto
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #14 on: January 14, 2013, 01:36:08 pm » |
In base a quello che appare direi che è molto probabile che vengono controllati i singoli segmenti di ogni cifra in funzione dei bit del valore che invii, ovvero un byte è composto da 8 bit e 7 di questi corrispondono ai segmenti del display, se c'è anche il punto è legato all'ottavo bit. Se invii una serie di valori dove metti a 1 solo un bit per volta per ogni byte in un attimo hai la codifica, usa il formato binario "0b00000000" mettendo a 1 solo un bit per volta. Devi inviare 4 byte per volta, uno per ogni cifra del display, e non singoli byte per ogni invio.
|
|
|
|
|
Logged
|
|
|
|
|
|