Show Posts
Pages: [1] 2 3 ... 195
1  International / Software / Re: SAM3X8E (Arduino DUE) manipolazione registri PIO on: June 20, 2014, 07:46:53 pm
Seguo ma non posso intervenire, mi manca il tempo di studiare e sperimentare. Qualche giorno addietro in un momento di "svago" ho spulciato sotto asf (atmel), ma la mancanza di tempo non mi ha permesso di isolare il codice e farlo mio, in più non è semplice seguire asf internamente in quanto basta guardare nella cartella sbagliata dove trovi lo stesso nome di file ma per microcontroller differente da quello che stavi seguendo, questa è la conseguenza delle librerie che uniformano le API.

Aiuto morale e stimolo: Vai vai pablos che sei partito bene, dai che vedo il titolo ARM demystification nella sezione Megatopics. smiley-razz

Ciao.

 
2  International / Hardware / Re: Regolatore di carica MPPT con arduino on: June 20, 2014, 07:34:58 pm
Io penso che sia il caso di concordare tutti verso la teoria che c'è alla base dell'acronimo MPPT, quanto meno questo è il punto di partenza per una discussione sensata. Poi se non sai, chiedi e qualcuno risponderà.

Già possiamo stare certi che arduino o in genere un microcontroller (anche più potente) non è pensato per realizzare un regolatore switching o regolatore a commutazione che dir si voglia. La difficoltà non è generare il
segnale PWM, ma modulare il PWM in base al segnale di feedback. In sostanza ci vuole un PID che giri anche abbastanza veloce altrimenti si è costretti a stare bassi con la frequenza del PWM.

Quindi queste considerazioni già sono sufficienti per evitare di usare un microcontroller per realizzare lo switching.
Io non vedo altra soluzione allo switching. shuntare non lo considero più MPPT, perché posso solo ridurre la tensione di carica e non elevarla.

Io ho trovato questa spiegazione terra terra che mi sembra comprensibile a tutti.
http://www.solar-electric.com/mppt-solar-charge-controllers.html

La butto li senza avere studiato:
Il regolatore switching di che tipo deve essere?  step-up/step-down?
Cioè può ridurre o innalzare la tensione di origine.
Arduino per cosa lo usiamo? Controlla lo switching fornendo un segnale (anche analogico), diciamo che imposta il setpoint dello switching, poi questo lo insegue.
Altri usi classici, visualizzazione/segnalazione, protezione e forse se fosse una DUE qualche algoritmo statistico, come logger per poi analizzare il lavoro effettuato dal tutto il controller al fine di poter tirare le somme e/o valutare gli aggiustamenti.

In teoria, la soluzione più efficiente è un regolatore di carica a corrente costante basato sul principio di funzionamento classico dello switching, per questo a suo tempo lessi un poco di doc Linear, ma adesso a distanza di tempo non ricordo nulla, ma sono sicuro che tra i chip di linear ce ne sia uno da interfacciare con un microcontroller, per cui io partirei da li.

PS:io sono preso da altro e ho smesso di studiare le AN, quindi non sono più aggiornato.

Ciao. 
3  International / Hardware / Re: Stazione meteo con Arduino on: June 16, 2014, 10:18:58 am
L'immagine dei collegamenti mostra una Arduino Uno o ci vado male io?
Quindi avete provato con la UNO e non va, io continuo a pensare che si tratta di collegamenti errati o di pin non assegnati correttamente.

Fate un tabella con la corrispondenza dei pin tra display e board.
Stampate un striscia con su scritto il nome di ogni pin e incollatela sul retro del display in corrispondenza dei fili saldati (ricontrollate le saldature con una lente di ingrandimento o monocolo, qualche saldatura fredda può capitare anche perché non mi sembrano proprio eseguite da manuale)

LCD                                                            Arduino UNO
LCD RS ??                   <-->                       pin number ??
LCD EN ??                  <-->
LCD D4 ??
LCD D5 ??
LCD D6 ??
LCD D7 ??
LCD R/W ??

Ciao.
4  International / Software / Re: il programma non da errori, ma non funziona correntemente, salta le istruzioni. on: June 16, 2014, 09:55:30 am
Quote
Mi ha rincuorato tanto le tua parole quando hai detto che cera una buona recensione
mmmm...ok ma ti stroncherei lo stesso in sede di esami. smiley-twist

Di cose cose da ridire ne avrei parecchie, comunque un consiglio spassionato: Gli elogi scartali e conserva le critiche costruttive.

Quote
non uso i pin analogici per i pulsanti ma per i sensori uno che controlla il passaggio del gettone e la presenza del bicchiere.

ok, non conosco il tipo di sensore per rilevare il valore della moneta, se fornisce una valore analogico in base al taglio della moneta allora si è corretto usare analogRead(), per la presenza bicchiere invece penso che il sensore sia equiparabile ad un contatto e quindi aperto/chiuso o LOW/HIGH, ma se è anche esso analogico come per la moneta è corretto usare analogRead().

I nomi e tipi delle variabili non sono scelti correttamente. Però quando spieghi usi i termini corretti e allora perchè non provare a chiamare le variabili partendo da questa descrizione: passaggio del gettone e la presenza del bicchiere.

passaggioGettone, presenzaBicchiere.

Insomma un nome meno equivocabile possibile aiuta la lettura e comprensione del codice, in special modo chi il codice lo legge per la prima volta, apprezza il codice autodocumentante, come pure i commenti.

Ciao.
5  International / Generale / Re: compliazione programma, 3 pulsanti indipendenti che funzionano allo stesso tempo on: June 16, 2014, 06:02:09 am
Ultimo consiglio.
Prima di pubblicare il codice usa la funzione di formattazione automatica presente nel menù strumenti dell'IDE. Da al codice un aspetto decisamente più leggibile.  smiley-mr-green

Concordo in pieno e inoltre visto che il codice funziona dedica un poco di tempo a rendere il codice più leggibile.
Quote
/*
Assegnazione variabili
*/
int M1;


Non stai assegnando niente, ma dichiarando.
M1, può voler dire tutto o niente, più chiaro ed esplicito: memory1 o altro nome che inequivocabile.
Quote
int P1 = 6; // Pulsante di apertura
non esistono pin numerati negativi quindi int è un spreco di risorse e non fa capire che valore conterrà, meglio
byte buttonToOpenPin = 6; // è inequivocabile che è un pulsante che serve per aprire e 6 è il pin a cui è connesso.

Ciao.



6  International / Hardware / Re: URGENTE!!!!! per maturità 2 giorni disponibili on: June 16, 2014, 05:54:07 am
Posso solo consigliare di usare del codice di test per il display. Codice di test ovviamente isolato dal programma principale, se il problema persiste allora ci sono collegamenti sbagliati o precari.

Ciao.
7  International / Software / Re: encoder incrementale on: June 16, 2014, 05:49:56 am
Quote
while(time <= 3000)                //esegue il ciclo per 3 secondi
{
  lcd.print("creato da matteo");   // (t1)
  if(digitalRead(6)==HIGH) N=N+1;  (t2)
  time=time+1;                                    (t3)
  _delay_ms(0.998);                          (t4)
}

0.998 millesimi di secondo (quasi un secondo millesimo di secondo * 3000 = secondi) valore da trovare sperimentalmente.
Il while dura  t1+t2+t3+t4.

Ciao.
8  International / Software / Re: il programma non da errori, ma non funziona correntemente, salta le istruzioni. on: June 16, 2014, 05:43:24 am
Quote
Da pochi giorni dall'esame sono d'avvero in ansia visto che il programma funziona bene alcune volte ed altre no... Spero nei vostri consigli o soluzioni.

Se fossi io in commissione, apprezzerei il diagramma a blocchi, come è scritto il codice, com'è documentato e baderei meno al fatto che ogni tanto non funziona. Ma non ci sono io in commissione e se c'è chi non ne capisce molto solitamente bada più al funzionamento effettivo e in questo caso il giudizio non può essere dei migliori.

Non so quante settimane (giorni) hai a disposizione per correggere, e di cose da sistemare ce ne sono parecchie.

Perché usi A0 e A1 per i pulsanti?
I pin A0 ecc possono essere usati in digitale con digitalRead().

Il problema con A0 ecc connesso a pulsanti è che c'è una tolleranza che dipende dalla corrente usata da micro, es
quando accendi dei led o azioni dei relè o altri carichi la lettura analogica subisce variazioni che se non prese in considerazione possono comportare funzionamenti anomali al codice. Considera anche il tempo in cui questa variazione si verifica, es variazioni di 500 di durata inferiore a 100ms li puoi vedere solo con l'oscilloscopio.

Con i pin analogici e pulsanti si può arrangiare un circuito di debounce molto efficace con una R e C e un diodo e forse del diodo se ne può fare a meno, posta lo schema di connessione pulsante magari basta aggiungere un condensatore per migliorare la situazione. Oppure passi a digitalRead con debounce, nell'IDE c'è anche l'esempio di codice.

Quote
si ti ripeto non mi da problemi non influisce... non ho capito il problema sul sensori analogici
Non essere così sicuro, insinua un dubbio quasi sempre, la certezza assoluta è cosa rara e non aiuta in questo settore.

Quote
un errore ci sarebbe anzi 4, bibita si scrive con una B sola, non vorrai portare un listato alla commissione con errori grammaticali.

Aooooo nu spegne... sta a uscì a bibbita!  smiley-lol smiley-lol smiley-lol

 smiley-sweat
Io non ci baderei poi tanto a questo errore, ma è probabile che chi esamina noti ogni pelo fuori posto, anche se insignificante per il funzionamento del codice. Tra l'altro manca l'internazionalizzazione di almeno due lingue e quindi si capisce che il codice deve ancora essere sviluppato.

Ciao.
9  International / Software / Re: E' possibile resettare la MCU via software? on: June 15, 2014, 06:46:38 am
Prova a leggere qui se può esserti di aiuto http://www.nongnu.org/avr-libc/user-manual/mem_sections.html

Mai avuto la necessità di resettare via software.

Ciao.
10  International / Generale / Re: compliazione programma, 3 pulsanti indipendenti che funzionano allo stesso tempo on: June 15, 2014, 06:07:47 am
Code:
loop {
Non esiste l'istruzione loop { }.

cicli infiniti:
while (true) { // your code }
for ( ; ; ) { // your code }

Quote
Ho notato che non si va molto lontano senza basi di C e C++, Ma putroppo per adesso mi serve farfunzionare sto programmino.

Sarà un percorso in salita pieno di buche e burroni, senza segnaletica e nel buio più pesto che si possa immaginare, non intraprenderei mai un percorso simile nonostante il mio coraggio.

PS: Se il tempo che hai speso per scrivere il programma è di circa una settimana e tu lo avessi investito a
studiare le basi C, ora saresti allo stesso punto, cioè il programma non esiste ma hai le informazioni di base per scriverlo, cioè avresti a mio parere guadagnato 1 settimana per raggiungere l'obbiettivo a breve scadenza.  

Ciao.
11  International / Hardware / Re: Opinioni Arduino PRO mini cinese on: June 12, 2014, 09:27:13 am
icio forse ha interessi economici in ballo, almeno io difendere il made in China così a spada tratta solo se avessi interessi economici, pensa un po io che sono per così dire "seguace" di linux e GNU mica me la prendo se dicono che fa ca...re.

Ognuno ha i proprio punti di vista e restano tali o si modificano nel tempo.
Un tempo (anni 80) si diceva tutte cose in Giappone fanno, ora la TV, l'elettrodomestico  lo scegliamo di marca giapponese, forse finirà anche cosi per le cose prodotte in Cina, ma al momento non è così e c'è una porzioni di prodotto cinesi che è da evitare, se poi del prodotto c'è solo il prezzo non è cosa per me.

Se curassero la documentazione tecnica, se testassero i prodotti e se ci fosse il servizio help online il prezzo di vendita finirebbe per salire e allora già il prodotto comincia a diventare interessante.

Per me l'elettronica non può essere equiparata a bigiotteria. Alimentatori per PC senza filtri, scaldini che esplodono, plastica che puzza (e non smette mai) e con chi reclamo, alla fine forse il fatto è che io non gioco
i gratta e vinci (e sicuro che vincono loro) e quindi non tento la fortuna.

PS: Dateci un taglio
PS1: Siamo tutti simili, ma profondamente diversi e mai uguali.

Ciao.
12  International / Software / Re: AVR-CoreLib on: June 12, 2014, 09:00:19 am
Si ricordo il post in questione e anche il codice.

Quote
Ottimizzare per uno specifico progetto è il modo migliore per rendere il codice supersnello. Arduino in questo aiuta i neofiti ma infila nello sketch centinaia di byte di roba inutile.

Io è da un po che scrivo le applicazioni dividendola in libreria e applicazione e capita spesso che qualche parte di libreria può essere unita ad una solo libreria generica che offre varie alternative, es la seriale bufferizzata (comoda ma alle volte...) la seriale non bufferizzata, le gpio funzioni, macro e inline così nell'applicazione decido cosa usare per fare la stessa cosa, la twi senza buffer e quella con il buffer e gli interrup, abiltare o meno il timeout su seriale o twi ecc.

Solo che mettere tutto insieme e curare la documentazione non mi è ancora riuscito e forse non mi riuscirà mai.

Ciao.
13  International / Software / Re: Array di oggetti che devono essere eliminati dopo tot tempo on: June 12, 2014, 08:51:08 am
@lesto

Tu dici un ringbuffer di struct gestito come una linked list dove ogni elemento contiene anche il pin e il timer?
Si penso proprio che sia implementabile, io mi incasino un po con head e tail ma alla fine l'ho sempre spuntata io.

@leen15
Ok, mi fa piacere che hai risolto, posta il codice così appena ho 10 minuto lo leggo.
Quote
Ora come ora va bene cosi Mauro, non vorrei complicare ulteriormente la cosa  smiley-grin
Per me è una regola, cosa che funzione non si butta, e poi c'è sempre tempo per tentare di migliorarlo.

Ciao.
14  International / Software / Re: Array di oggetti che devono essere eliminati dopo tot tempo on: June 12, 2014, 08:29:03 am
leen15 non ho tempo da dedicare al problema, non ho il codice in tasca e ho solo una vaga idea di come orchestrare la cosa. Penso che un ringbuffer dedicato e una linkedlist dedicata possano essere unite per risolvere il problema allocazione dinamica, ma al momento non ho le idee chiare. Concettualmente dovrebbe essere qualcosa di simile a:

allochi staticamente 100 byte (ref memoryA) (numero a caso), crei un allocatore che lavora solo esclusivamente su memoryA per allocare lo spazio per un solo elemento, gestisci memoryA come un linked list dove un membro della struttura (elemento) è un puntatore a tipo elemento, che può essere impostato per puntare al prossimo | precedente elemento.

Sono cosciente che è complicato e non ben definito, ma sono sicuro si possa fare e che risolve totalmente il problema alla radice.

Ciao.
15  International / Generale / Re: problema di codice on: June 12, 2014, 08:01:29 am
 
Quote
Ciao a tutti, spero di non disturbare.

mmmm... tu hai intenzione di disturbare? non credo è allora cosa importa se c'è chi si sente disturbato?

Quote
Sono un principiante, quindi se pensate che io vi disturbi per cose troppo semplici ditelo. Ciao!!

Si si tratta di cose semplici oltre che banali a cui si deve arrivare studiano almeno le basi C++, osservando gli esempi di codice e dedicando ore e ore a ragionare.

Io non conosco la yun, quindi può essere che le cose siano leggermente differenti da come le descrivo qui.

Serial.read() restituisce un numero intero che è la rappresentazione ASCII del carattere visualizzato sul display.
Esempio per rappresentare a video il carattere A si usa il codice ASCII 65 decimale. Quindi se nel terminale premi A
Serial.read() restituisce il codice 65, per vedere a cosa corrisponde il carattere 1,2,3 ecc, cerca su wikipedia la tabella ASCII. (si tratta di nozioni di base)

Code:
if (pin = 0 || pin > 10 || pin < 2 )
=, == sono operatori differenti, = assegna da sinistra verso destra. == è un operatore logico di confronto, quindi
if ( questo == quello ) { //.. } è corretto, if (questo = quello) anche se formalmente corretto si comporta diversamente dal precedente, in quanto si tratta di assegnare quello a questo e ciò è stato eseguito con successo la if viene valutata true (vera).

Cerca tra gli esempio di arduino e/o specificamente per yun cosa si deve scrivere per leggera dati da seriale,
normalmente la logica vuole che ci sia un controllo del tipo:

Se ci sono dati nel buffer della seriale allora leggi
int pin;
if (Serial.available() > 0) {  // se ci sono dati nel buffer
    pin = Serial.read();
}

Altrimenti Serial.read() verrebbe eseguito continuamente anche se non ci sono dati nel buffer.

Ciao.
Pages: [1] 2 3 ... 195