Mi chiamo Alessio, frequento la 5° elettronica, ci hanno chiesto di scrivere un programma che deve generare in sequenza numeri in binario a 8 bit ( da 0 a 255). Il programma va fatto senza array e deve usare i cicli for (ci hanno detto massimo 8 for). Usiamo i pin seriali collegati a un convertitore DAC0808LCN.
Potreste aiutarci?
Grazie mille in anticipo.
Mi fa piacere che ve lo abbiano chiesto. Risolvi il problema nel migliore dei modi e prendi un bel voto!
Ciao
Gianluca
Grazie Gianluca non sappiamo assolutamente come farlo
Ciao alexsavo01,
dovresti prima presentarti nell'apposita sezione...sicuramente qualche moderatore arriverà per darti dettagli precisi su come e cosa fare.
...secondo...se per quest'esercizio vi fanno usare ARDUINO penso che un minimo lo abbiate trattato...cos'è che non ti è chiaro...come funziona un ciclo for()...come settare i PIN...altro?
>alexsavo01: Come ti è già stato indicato ... essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.
Guglielmo
P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili
Tramite "Port manipulation" (cerca con Google Arduino port manipulation) puoi pilotare gli 8 bit della porta D contemporaneamente e fare tutto con UN SOLO FOR! Devi solo contare da 0 a 255
Producendo esattamente nello stesso istante gli 8 bit, eviti i glitch all'uscita del convertitore D/A.
Buono studio! (un po' di merito lo vorrai avere, no? )
Gianluca
Ripensandoci... I pin SERIALI collegati al DAC0808LCN???... In ingresso ha solo 8 bit paralleli!
Qualcosa del genere forse?
byte carattere;
void setup() {
Serial.begin(9600);
for(int indice=0;indice<255;indice++)
{
carattere=byte(indice);
Serial.print(carattere,BIN);
// Caratteri dell'alfabeto
if( (indice>=65 and indice <=91) or (indice>=97 and indice<=122 ) )
{
Serial.print(" => ");
Serial.print(char(carattere));
}
Serial.println(" ");
}
}
void loop() {
// put your main code here, to run repeatedly:
}
E fai stampare solo alcuni caratteri
111010
111011
111100
111101
111110
111111
1000000
1000001 => A
1000010 => B
1000011 => C
1000100 => D
1000101 => E
1000110 => F
1000111 => G
1001000 => H
1001001 => I
1001010 => J
1001011 => K
1001100 => L
1001101 => M
1001110 => N
1001111 => O
1010000 => P
1010001 => Q
1010010 => R
1010011 => S
1010100 => T
1010101 => U
1010110 => V
1010111 => W
1011000 => X
1011001 => Y
1011010 => Z
1011011 => [
1011100
alexsavo01:
ci hanno chiesto di scrivere un programma che deve generare in sequenza numeri in binario a 8 bit ( da 0 a 255). Il programma va fatto senza array e deve usare i cicli for (ci hanno detto massimo 8 for). Usiamo i pin seriali collegati a un convertitore DAC0808LCN.
Giuro che ci ho messo qualche minuto per focalizzare la cosa e capire (più o meno) cosa stai dicendo, e tuttora continuo a non capire bene la richiesta...
Dovresti scrivere ESATTAMENTE cosa vi hanno richiesto, detta così non ha grosso senso. Ad esempio il DAC: un DAC è un convertitore da DIGITALE ad ANALOGICO, che uscita seriale vorresti metterci? L'ingresso è costituito da 8 segnali digitali che, tramite una R-2R ladder li converte in 256 livelli analogici. Per cui se gli mandi i byte da 0 a 255 ti genera un segnale con un'onda a dente di sega.
Per cui tralasciando quindi per ora il discorso della seriale (credo sia un refuso, hai scritto "seriali" invece di "digitali"), si tratta di generare con Arduino i valori da 0 a 255 da mandare al DAC tramite 8 pin digitali. Condizioni: non potete usare array e dovete usare cicli for() (strana richiesta, mah...), massimo 8 cicli for() (altra cosa curiosa...).
Quindi ora dopo che avrai inserito la tua presentazione spiega meglio quali sono i requisiti della cosa ed i vincoli, e ci si prova. Ma qui nessuno scrive codice per nessuno, dovete iniziare a scrivere qualcosa voi, poi possiamo darvi una mano. Se non sapete ancora programmare su Arduino e non conoscete il C/C++, la vedo difficile (ma sarebbe strano che vi chiedessero di implementare qualcosa in un ambiente del quale non vi hanno insegnato nulla...).
EDIT: Datman ti ha dato un ottimo consiglio, che è la cosa più efficiente possibile, ma ovviamente ripeto, se non sapete neanche da dove cominciare è difficile per tutti, temo che dovrete prima studiare un pochino e poi, come detto, postare qui quello che avete realizzato e che non vi riesce di far funzionare ...
EDIT: Datman ti ha dato un ottimo consiglio, che è la cosa più efficiente possibile ...
e ha usato un solo for()
...con un if () ha fatto uscire pure i caratteri in seriale...
se ci mette uno switch(), un while() e 3 minuti di codice esce fuori un robot AI
Chiedo perdono, non ho resistito