Alessandro Dj-alex Turco Inserito: 25 gennaio 2015 Segnala Share Inserito: 25 gennaio 2015 vedi foto allegata Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 25 gennaio 2015 Segnala Share Inserita: 25 gennaio 2015 Scusa ma tu vuoi che qualcuni faccia il programma per conto tuo? Scordalo! Dal forum sicuramente riceverai tanto aiuto, ma ci devi mettere del tuo. Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 25 gennaio 2015 Autore Segnala Share Inserita: 25 gennaio 2015 No...non voglio che qualcuno faccia il programma al posto mio...cerco solo aiuto...io ho già progettato la parte hardware Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 25 gennaio 2015 Segnala Share Inserita: 25 gennaio 2015 (modificato) Che tipo di aiuto ti serve? Che complilatore usi? Più informazioni dai più fcilmente sarai aiutato. Modificato: 25 gennaio 2015 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 25 gennaio 2015 Segnala Share Inserita: 25 gennaio 2015 Ciao.Intanto per funzionare ha bisogno di un paio di resistori da 10K tra RA0 e RA1 e VDD perché la porta A non ha pull-up interni, un resistoresempre da 10K collegato al pin 4 altrimenti hai problemi col reset e in ultimo è sempre consigliabile un condensatore da 100 nF tra il pin VDD emassa.Per il software puoi iniziare a definire un array dove memorizzare il codice delle cifre, per esempio:char const cifra[] = {0xf3, 0xyy, 0xyy, 0xyy, 0xyy, 0xyy, 0xyy, 0xyy, 0xf7, 0xyy};0xf3 corrisponde allo '0', 0xf7 all'8', gli altri valori yy li puoi trovare tu.Nel codice scriverari: portb = cifra[0]; per accendere lo zero, portb = cifra[1]; per accendere l'uno e così via.Per leggere i tasti puoi fare un ciclo che controlla lo stato dei pulsanti ed esegue l'azione conseguente.Per evitare i rimbalzi meccanici dei tasti devi usare un codice anti rimbalzo, se fai una ricerca su internet trovi come farlo. Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 25 gennaio 2015 Segnala Share Inserita: 25 gennaio 2015 (modificato) Se lo scopo è imparare a usar PIC a diavolerie simili può andare altrimenti credo che con un paio di integrati e qualche passivo può risolvere senza utilizzare un PIC. Modificato: 25 gennaio 2015 da accacca Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 25 gennaio 2015 Autore Segnala Share Inserita: 25 gennaio 2015 Ok Devo usare il pic Il circuito lo devo simulare con multisim La parte hardware è corretta Avrei bisogno solo di un esempio di codice programma in C Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 Farti un esempio significa farti il programma, vist la banalità del programma. Il "C" va studiato. Non lo s'impara per scienza infusa e nemmeno per tentativi. Ti prendi un manuale, magari il classico Richtie, e lo studi. Se non fai così potrai mettere assieme solo qualche cosina, scimmiottando esempi senza sapere quello che stai facendo. Per imparare bisogna fare un minimo di fatica e spenderci un poco di tempo. Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 Il problema è che io so usare benissimo arduino ma usa un C con comandi proprietari e non so come farlo con un PIC16F84Se vuoi faccio il programma con C arduino e poi qualcuno mi aiuta a farlo adattare per il PIC Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 Che compilatore usi per il PIC? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 Il problema è che io so usare benissimo arduino ma usa un C.... Arduino per le librerie usa "C++" mentre per gli sketch è praticamente il "C" stndard. Poi esistono le "bult in functions" che sono funzioni speciali sviluppate su un determinato compilatore per un determinato processore. Anche per il PIC i vari complilatori adottano "bult in functions" che variano secondo compilatore usato. Poi c'è il problema del legame con lo Hw che, anche usando un liguaggio ad alto livello, è imprescindibile. Tu prova a scrivere il programma per arduino, poi vediamo di aiutarti alla trasposizione. Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 // numero dei pin di arduino collegati ai segmenti const byte seg_A = 2; const byte seg_B = 3; const byte seg_C = 4; const byte seg_D = 5; const byte seg_E = 6; const byte seg_F = 7; const byte seg_G = 8; // array dei segmenti const byte segments[7] = { seg_A, seg_B, seg_C, seg_D, seg_E, seg_F, seg_G,}; // array byte in uscita per ogni valore (l'ultimo valore non è mai utilizzato) const byte numbers [7] = { 0b10101011, // n 0b11111001, // 1 0b10100100, // 2 0b10110000, // 3 0b10011001, // 4 0b10010010, // 5 0b10000010, // 6 }; // variab byte gear = 0;Deve contare da 0 a 9 avanti e indietro con i due pulsantiNon uso un compilatore lo devo simulare con multisim e usa hi-tech C Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 ** come faccio ad adattare questo codice arduino per pic ** come faccio ha gestire i pulsanti avanti e indietro (senza farlo avanzare in automatico) // Conteggio 9 secondi con display 7 segmenti a catodo comune // definizione delle variabili a cui collegare ogni segmento del display // la lettera rappresenta il segmento del display il numero il pin // digitale di Arduino a cui è collegato il corrispondente pin del display const int a=7; const int b=6; const int c=4; const int d=2; const int e=1; const int f=9; const int g=10; void LedAcceso(int n) { switch(n) { case 0: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); break; case 1: digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); break; case 2: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, HIGH); break; case 3: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); break; case 4: digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 5: digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 6: digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 7: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); break; case 8: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 9: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; } }; void setup() { pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); } void loop () { for (int i=0;i<10;i++) { LedAcceso(i); delay (1000); } } Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 (modificato) qui trovi il manuale dell' hi-tec C se ti interessa http://ww1.microchip.com/downloads/en/DeviceDoc/HTC_PIC_manual.pdf Modificato: 26 gennaio 2015 da simuffa Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 Nel messaggio 13 è assebler / assembly ma devo farlo in C Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 (modificato) qui c'è un primo pezzo da cui puoi prendere spunto... unsigned char num; // numero da visualizzare //array con la codifica per i displayunsigned char DISPLAY[10] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111};void main(){ TRISA=0; TRISB=0; num=0;for(;; ){if(num==10) num=0; PORTB=DISPLAY[num]; num++; Delay_ms(1000); } } Modificato: 26 gennaio 2015 da simuffa Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 come faccio ha gestire i pulsanti avanti e indietro (senza farlo avanzare in automatico) Nel medesimo modo come fai con arduino, con la facilitazione che gli ingressi e le uscite in "C" le puoi anche tratare singolarmente a bits Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 (modificato) CIOE ESEMPIO gli ingressi e le uscite in "C" le puoi anche tratare singolarmente a bits #define BTN1 RA0 / #define BTN2 RA1 #define A RB0 #define B RB1 #define C RB2 #define D RB3 #define E RB4 #define F RB5 #define G RB6 Modificato: 26 gennaio 2015 da Alessandro Dj-alex Turco Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 // #include <p16f84.h> #define BTN1 RA0 // pulsante PIU #define BTN2 RA1 // pulsante MENO #define a RB0 // led A_1 #define b RB1 // led B_2 #define c RB2 // led C_3 #define d RB3 // led D_4 #define e RB4 // led E_5 #define f RB5 // led F_6 #define g RB6 // led G_7 void LedAcceso(int n) { switch(n) { case 0: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=1; PORTAbits.RB6=0; break; case 1: PORTAbits.RB0=0; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=0; PORTAbits.RB4=0; PORTAbits.RB5=0; PORTAbits.RB6=0; break; case 2: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=0; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=0; PORTAbits.RB6=1; break; case 3: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=0; PORTAbits.RB5=0; PORTAbits.RB6=1; break; case 4: PORTAbits.RB0=0; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=0; PORTAbits.RB4=0; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 5: PORTAbits.RB0=1; PORTAbits.RB1=0; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=0; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 6: PORTAbits.RB0=1; PORTAbits.RB1=0; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 7: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=0; PORTAbits.RB4=0; PORTAbits.RB5=0; PORTAbits.RB6=0; break; case 8: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 9: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=0; PORTAbits.RB5=1; PORTAbits.RB6=1; break; } }; void loop () { for (int n=0;n<10;n++) { LedAcceso(n); delay (1000); } } void main() { /* Insert your code here. */ } >>>>> NON VA DOVE HO SBAGLIATO Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 (modificato) il main è la prima funzione che parte.. e nel tuo non c'è nulla hai riscritto tutto questo per rifare semplicemente quello che ti ho messo nell'esempio? hai definito le variabili poi usi PortA? bastava che scrivessi a=1; ad esempio (dovevi usare portB comunque) Modificato: 26 gennaio 2015 da simuffa Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 PERO QUELLO CHE HAI POSTATO NON VA Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 e cosa fa? Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 NIENTE Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 il programma non l'ho fatto io.. l'ho preso da internet e funziona.. nel messaggio 5 di giacomo56 alla 3 riga probabilmente c'è la soluzione Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora