Ragazzi con tutti gli altri discorsi infilati in mezzo al post mi son perso... Ho fatto come mi avete detto... Ho "acceso" i due pin, quello della fila e quello della colonna ma vanno tutti e due i led... Mi passate un codice da farmi provare?? per accendere un led centrale?? Grazieee
maggio93:
Ragazzi con tutti gli altri discorsi infilati in mezzo al post mi son perso...
Scusa...colpa mia
maggio93:
Ho fatto come mi avete detto... Ho "acceso" i due pin, quello della fila e quello della colonna ma vanno tutti e due i led...
Mh questo è strano, controlla che i collegamenti siano perfettamente identici allo schema, perchè c'è qualcosa che non torna.
Dici che ti si accendono i led 5 e 10, ma cosa intendi? Cioè, come li hai numerati?
Comunque agendo sui pin 5 e 10 si accende il led centrale del livello più basso! Per quello al centro del cubo, i pin sono 11 e 5.
Federico:
Non so se con 10ms hai gia' la persisenza...
Sul mio ultimo lavoro POV, coi NIXIE, gia' a 4 sfarfallavano...
Scusa Federico,
Una domanda OT, ma per il pov hai messo online qualcosa che possa essere uno spunto x ki vuole iniziare?
maggio93:
Ragazzi con tutti gli altri discorsi infilati in mezzo al post mi son perso... Ho fatto come mi avete detto... Ho "acceso" i due pin, quello della fila e quello della colonna ma vanno tutti e due i led... Mi passate un codice da farmi provare?? per accendere un led centrale?? Grazieee
Come ti hanno detto in base a quel disegno attivando D11 e D5 si dovrebbe accendere il led centrale della fila centrale, se dai infromazioni facendo riferimento a numerazioni dei led che sul disegno non ci sono ovvio che nessuno capirà nulla di quello che dici; cioè se mi dici che è acceso il led 3 come faccio a capire da dove devo iniziare a contare e verso che direzione?
Ad ogni combinazione livello/led si deve accendere un solo led, se ne vedi due hai sbagliato qualche collegamento o c'è qualche corto circuito, controlla bene.
Avete nuovamente ragione... mi organizzo meglio e domani spero di riuscire a farmi capire... una domanda un po' fuori luogo... ma per imparare a programmare... imparare ad usare le "funzioni" più utilizzate... voi come avete fatto? e io, come posso fare?? a me spaventa molto il fatto di dover leggere leggere e leggere senza risultati, perchè molte guide ci girano molto intorno ...cosa mi consigliate per cominciare??? Grazie!! (ripeto, domani vi saprò dire con "precisione" cosa ho fatto e come...)
maggio93:
una domanda un po' fuori luogo... ma per imparare a programmare... imparare ad usare le "funzioni" più utilizzate... voi come avete fatto? e io, come posso fare?? a me spaventa molto il fatto di dover leggere leggere e leggere senza risultati, perchè molte guide ci girano molto intorno ...cosa mi consigliate per cominciare???
Ti studi qualche guida o libro sul C\C++ (può essere una palla lo so, ma un poco di teoria ci vuole sempre), a partire dalle cose base base, e man mano che leggi provi anche di persona.
Comincia a programmare qualcosa si semplice su pc (tipo i classici programmini da laboratorio a scuola), robe che non fanno che qualche calcolo aritmetico magari, ma servono comunque,
giocaci, sperimenta, cerca di capire cosa fa ogni riga di codice che scrivi, non copiare mai codice senza capirlo!
Quando avrai preso un po' di confidenza col linguaggio comincia a spulciare il codice altrui (anche sketch arduino, è sempre C++ anche quello alla fin fine, anche se ha delle funzioni specifiche in più),
esaminalo pezzo per pezzo, nota come uno risolve un problema che tu risolveresti in maniera diversa e cerca di capire perchè funzionano entrambi.
Per ogni problema, anche minimo, cerca su google. Tieni sempre d'occhio siti come StackExchange, dove troverai molto spesso un aiuto per i tuoi problemi (informatici, ovvio ).
Poi ognuno ha il suo modo di apprendere, sta a te trovare il tuo
maggio93:
Avete nuovamente ragione... mi organizzo meglio e domani spero di riuscire a farmi capire... una domanda un po' fuori luogo... ma per imparare a programmare... imparare ad usare le "funzioni" più utilizzate... voi come avete fatto? e io, come posso fare?? a me spaventa molto il fatto di dover leggere leggere e leggere senza risultati, perchè molte guide ci girano molto intorno ...cosa mi consigliate per cominciare??? Grazie!! (ripeto, domani vi saprò dire con "precisione" cosa ho fatto e come...)
giudizio al volo da Prof: i tuoi libri non sono "zuppi" del tuo sudore
Un OTTIMO testo è quello distribuito da Futura Elettronica da un paio di mesi a questa parte, ottimi esempi hardware e sketch non banali e molto didattici, l'ideale per chi vuole imparare un po' di basi senza fare troppi sforzi (c'ho preso? :D)
qui un'anteprima, [questo](FuturaNet: Il portale per makers ed elettronica by Futura Group TECNICA&L3=ELETTRONICA&cd=8330%2DARDUBOOK1&nVt=&d=9,90#sopra) il libro.
Come promesso, mi sono "organizzato" per farmi capire meglio...
Allora, i cerchi sono i led visti dall'alto... e le righe sono i "piani" del cubo... La numerazione dei led corrisponde al pin ai quali sono collegati, mantre invece le righe sono collegate a: 1° riga pin 11, 2° riga pin 12 e 3° riga pin 10.
Se per esempio voglio accendere il led 5 della 3° riga, e quindi metto HIGH i pin 10 e 5, mi si accendono i led 5 e 1 della 3 riga... :S
Sono stato chiaro? : )
Questo è il codice che ho preso dal sito dal quale ho preso la "guida":
int Columnas[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int Filas[] = {12, 11, 10};
int RandFila; //Variable para fila aleatoria
int RandColumna; //Variable para columna aleatoria
void setup()
{
int contador;
for (int contador = 0; contador < 10; contador++){
pinMode(Columnas[contador], OUTPUT); }
for (int contador = 0; contador < 4; contador++){
pinMode(Filas[contador], OUTPUT); }
}
void loop()
{
RandLed();
}
void RandLed()
{
RandFila = random(0,3);
RandColumna = random(0,9);
digitalWrite(Filas[RandFila], HIGH);
digitalWrite(Columnas[RandColumna], HIGH);
delay(75);
digitalWrite(Filas[RandFila], LOW);
digitalWrite(Columnas[RandColumna], LOW);
delay(50);
}
e con questo non ci sono problemi... cosa altro vi devo dire per soddisfare tutte le richieste? Intanto vi ringrazio!!! : )
non vogliamo soddisfazioni da te
potresti per esempio fare questa prova:
fai un ciclo da 1 a 9, ogni volta con una colonna diversa e scrivi quali led si accendono;
poi
lascia il 5 HIGH fisso e cicla le tre righe e scrivi i risultati (quello della terza è chiarissimo ormai )
ripeto li hai CERTAMENTE montati male o ci sono dei cortocircuiti, forse con le prove si riesce a capire l'errore e a darti un suggerimento.
@Michele Menniti mi vergogno a dirlo... lo faccio?? ma si da, tanto sono qui per imparare... Con minibloq sbagliavo qualcosa e me li accendeva tutti e due... Ho preso il codice di esempio del Blink e l'ho modificato con "l'ide??" di arduino e va... Perdonatemi eh!!! ora provo ad imparare qualcosa... ma ho già fatto una sequenza solo con la speranza che funzionasse ma senza sapere troppo di C Scusatemi vi ringrazio moltissimo...
Altra domandona... dopo aver imparato a programmare il cubo (nel mio piccolo) volevo sapere come faccio, con un pulsante, a cambiare sequenza di accensione dei led... cioè, cosa scrivo?? come faccio?? Graziee!! ; )
maggio93:
@Michele Menniti mi vergogno a dirlo... lo faccio?? ma si da, tanto sono qui per imparare... Con minibloq sbagliavo qualcosa e me li accendeva tutti e due... Ho preso il codice di esempio del Blink e l'ho modificato con "l'ide??" di arduino e va... Perdonatemi eh!!!ora provo ad imparare qualcosa... ma ho già fatto una sequenza solo con la speranza che funzionasse ma senza sapere troppo di C Scusatemi vi ringrazio moltissimo...
ma figurati, averti qui sotto la mia ascia svedese ]
Il pulsante lo controlli con una logica "if"
if pulsante == HIGH {
incrementi una variabile "sequenza" di 1
switch case
case 1:
sequenza 1()
case 2:
sequenza 2()
case x:
azzeri la variabile sequenza e ricominci daccapo.}
Bada che questo NON è un codice ma solo una idea scritta in codice maccheronico, studiati i comandi e studiati anche il debounce per il pulsante oppure le sequenze diverranno assolutamente casuali
Beh, è l'unica cosa che ho capito!!! hahaha ...gli "argomenti" da studiare quali sono?? cioè per esempio.. io so a stento cos'è una variabile quindi non saprei come incrementarla.. poi switch case!?
Insomma, aiuto!! =(
maggio93:
[quote author=Michele Menniti link=topic=97773.msg738741#msg738741 date=1332782326]
Bada che questo NON è un codice ma solo una idea scritta in codice maccheronico
Beh, è l'unica cosa che ho capito!!! hahaha ...gli "argomenti" da studiare quali sono?? cioè per esempio.. io so a stento cos'è una variabile quindi non saprei come incrementarla.. poi switch case!?
Insomma, aiuto!! =(
[/quote]
ah il tuo aiuto significa che vuoi che qualcuno ti scriva il codice funzionante, ottimo modo di imparare, ma io non tiposso essere utile, però così non vai da nessuna parte; le indicazioni che ti ho dato te le vai a cercare nel Reference sul Playground, te le studi, scrivi un minimo di codice e poi lo provi, quindi chiedi aiuto per migliorarlo; te l'ho già detto che non dai la sensazione di uno che fa la gobba sui libri?
Seguiti questo topic che più o meno usa i comandi che ti ho detto così ne vedi alcune applicazioni pratiche, a te serve molto meno di quello che dicono lì.
Giusto, devo studiare, sbagliare e imparare a risolvere!! Ma il fatto che il C sia in inglese e per capire una cosa ci metto 3 giorni... mi butta giù!! comunque ci provo!! Ora provo a cercare... poi alla fine di tutto ti farò sapere qualcosa!! ; )
maggio93:
[quote author=Michele Menniti link=topic=97773.msg738763#msg738763 date=1332783592]
ah il tuo aiuto significa che vuoi che qualcuno ti scriva il codice funzionante, ottimo modo di imparare, ma io non tiposso essere utile, però così non vai da nessuna parte; le indicazioni che ti ho dato te le vai a cercare nel Reference sul Playground, te le studi, scrivi un minimo di codice e poi lo provi, quindi chiedi aiuto per migliorarlo; te l'ho già detto che non dai la sensazione di uno che fa la gobba sui libri?
Giusto, devo studiare, sbagliare e imparare a risolvere!! Ma il fatto che il C sia in inglese e per capire una cosa ci metto 3 giorni... mi butta giù!! comunque ci provo!! Ora provo a cercare... poi alla fine di tutto ti farò sapere qualcosa!! ; )
[/quote]
bravo! vedi che nel mio post precedente avevo aggiunto due righe
Ho scopiazzato un po' in giro, ho provato a capirlo e ho provato ad adattarlo al mio caso... dici che va bene??
int pulsante;
int sequenza=0;
void setup() {
//QUI CI SARÀ TUTTA LA MIA LISTA DI SETUP
pinMode(11,INPUT);
}void loop(){
pulsante=digitalRead(11);
if ((pulsante==HIGH) and (sequenza==0)) {
//QUI CI SARÀ IL CODICE DI UNA SEQUENZA
sequenza=1;
delay(1000);
}
else if ((pulsante==HIGH) and (sequenza==1)) {
//QUI CI SARÀ IL CODICE DI UN'ALTRA SEQUENZA
sequenza=2;
delay(1000);
}else if ((pulsante==HIGH) and (sequenza==2)) {
//QUI CI SARÀ IL CODICE DI UN'ALTRA SEQUENZA
sequenza=3; //ECCETERA...
delay(1000);
}
}
Io sono il meno indicato di tutti, come logica direi che va bene, dovrai certamente implementare un controllo debounce: serve per i cosiddetti rimbalzi dei pulsanti che vengono visti dal micro come una serie di prssioni consecutive del pulsante, invece che una sola, per cui genera effetti indesiderati; non è niente di particolare, però vedrai che ti servirà
per il debounce ci penso qualche altra volta, adesso sono molto divertito dal vedere questa cosa nuova... sto facendo i primi passi con la programmazione... infatti il cubo l'ho programmato tutto io... ovviamente due cosine le ho sbirciate giusto per capire come funzionava... adesso sono inciampato in un problema... vorrei poter cambiare sequenza anche quando la prima sta andando... altra cosa... posso leggere il valore della variabile "sequenza" sul monitor seriale?!
Sì ad entrambe le domande. Devi lavorare di codice però ed impararti un po' di costrutti del C per ottimizzare il codice. La sequela di if va bene per piccoli compiti ma quando devi fare tante cose non è conveniente, meglio lo switch..case.
A grandi linee posso riassumere il flusso di esecuzione di ciò che vuoi fare tu in questi passaggi:
- setup del dispositivo: avvio sequenza 1
- switch per gestire la sequenza: eseguire 1 step della sequenza in corso
- lettura dalla seriale: è arrivata una nuova sequenza?
- sì: incrementa il contatore della sequenza
- torna al punto 2)
La parte più complessa sarà il punto 2). Avrai una serie di switch..case, uno per ogni sequenza. All'interno avrai per ogni sequenza una routine da eseguire, scandita da un contatore di passi, ogni passo sarà uno step della sequenza.
Quando aggiorni da seriale il numero di sequenza da eseguire, entrando nel punto 2) verrà eseguita la sequenza prescelta. Ma sempre 1 passo alla volta, altrimenti non puoi controllare la seriale.