Consigli su manuali / libri ?

Ciao a tutti,
ho trovato su Amazon questo libro:

Secondo voi è abbastanza completo? Qualcuno lo ha letto?

Sto cercando un manuale per rispolverare il C e la programmazione, me la cavo discretamente bene con la progettazione elettronica, ma purtroppo, derivo da una scuola dove "spellacavi" e "pigiatasti" erano due cose completamente distinte, cosa che oggi, non si può più considerare ovviamente...

Attendo vostri consigli!

Grazie a tutti!

Fabio

Dai retta, prendi QUESTO ... lo ha scritto uno degli Admin del forum e vecchio utente di questa sezione :wink:

Guglielmo

Ti rispondo da perito elettronico, appassionato di elettronica da 35 anni con 25 anni lavorati nella manutenzione di apparati broadcast:
Credo che sia impossibile trovare un testo completo, perché devi conoscere:

  • l'elettronica (Ok)
  • il C(++)
  • le caratteristiche, i difetti intrinseci e i comandi del microcontrollore che usi.
    I libri, d'altra parte, sono solitamente rivolti a chi vuole giocare con Arduino senza conoscere neanche l'elettricità...
    Devi, quindi, procedere poco per volta in ogni settore.

Datman:
I libri, d'altra parte, sono solitamente rivolti a chi vuole giocare con Arduino senza conoscere neanche l'elettricità...
Devi, quindi, procedere poco per volta in ogni settore.

Il problema che riscontro è che sembra difficile trovare materiale per studiare la materia.
Mi spiego meglio...
Ho sempre visto l'hardware come il corpo di un progetto ed il software come l'anima del progetto stesso.

Ora, mi trovo a fare progettazione elettronica senza problemi, ma quando si parla di software mi metto le mani nei capelli...

Ho cercato on-line la qualunque per capire come funziona per esempio il bus SPI, tante spiegazioni generiche ma mai un "corso" dalla A alla Z, passo passo dove vengono illustrate le funzioni, come far dialogare diversi slave tra di loro ecc...

Ti fa davvero passare la voglia ::slight_smile:

Io, quando ho iniziato, alcuni anni fa, ho preso esattamente il libro che hai trovato tu.
Mi è stato utile per avere una panoramica organica, ma soprattutto per tornare dentro al mondo dell'elettronica, che finita la scuola avevo lasciato in un cassetto per una ventina d'anni a prendere polvere e ruggine.
Sono perito elettronico ed ingegnere informatico, ma non avevo mai lavorato in C o C++.
Quello che mi ha dato, quel libro, è stato un elenco di componenti di base da approvvigionare per avere un minimo di dotazione elettronica per sopravvivere.
Poi, a furia di leggere che Guglielmo suggeriva l'altro, per curiosità l'ho preso e devo dire che se il tuo problema, al contrario del mio, è di rinfrescare la parte informatica, ti offre un buon riferimento con anche indicazioni su alcune internals che in altri libri non trovi.

Quindi, se avessi avuto il mio problema, cioè di ripartire quasi da zero con l'elettronica, il manuale di Arduino avrebbe potuto aiutarti a riorientarti rapidamente sui vari componenti: shift register, transistor, mosfet, vari sensori del mondo Arduino ecc.
Io l'ho letto e mi sono fatto la lista della spesa.

Se invece il tuo obiettivo è di rinfrescare/imparare l'informatica, penso che Arduino la guida essenziale, suggerito da Guglielmo, sia la strada migliore.

In definitiva, diciamo che "il manuale di Arduino" rientra in pieno nella definizione di Datman:

Datman:
I libri, d'altra parte, sono solitamente rivolti a chi vuole giocare con Arduino senza conoscere neanche l'elettricità...

mentre "La guida essenziale" ti da un qualcosa in più lato programmazione e architettura interna di Arduino senza togliere nulla all'ecosistema elettronico di contorno.

Maurizio

Banfotech:
Ho cercato on-line la qualunque per capire come funziona per esempio il bus SPI, tante spiegazioni generiche ma mai un "corso" dalla A alla Z, passo passo dove vengono illustrate le funzioni, come far dialogare diversi slave tra di loro ecc...

Ti fa davvero passare la voglia ::slight_smile:

Per questo ci sono i datasheet e gli universitari :wink:

Cose tipo: questa che a mio avviso sono molto meglio di certi tutorial per utonti che ci sono in giro.
Ho preso un link a caso, magari è una ciofeca, ma volevo solo esprimere il concetto di "guida dalla A alla Z" sufficientemente attendibile.

Poi ci sono siti che fanno tutorial interessanti, anche se per utonti, spiegano bene e in modo accurato.

Per cip specifici si deve andare sui datasheet per avere i dettagli di dettaglio.

Si, è una giungla, dipende dal livello di approfondimento che ti serve.

Maurizio

Se invece il tuo obiettivo è di rinfrescare/imparare l'informatica, penso che Arduino la guida essenziale, suggerito da Guglielmo, sia la strada migliore.

Questo sicuramente!

maubarzi:
Cose tipo: questa che a mio avviso sono molto meglio di certi tutorial per utonti che ci sono in giro.

Non mi funziona il link...

Per questo ci sono i datasheet

Ho deciso di usare l'ATMEGA328P, ed effettivamente sul sito della Microchip ci sono tonnellate di documenti... Tra cui 427 pagine di datasheet e decine di application notes...

Ad esempio sul datasheet a pagina 160 c'è la sezione dedicata al bus SPI.

Ci sono un paio di esempi molto semplici, ma nulla di più...
Certo è molto ben dettagliato Bit per Bit il bus questo si.

Ho anche cercato online se ci fossero dei corsi o dei workshop di approfondimento ma nulla :frowning:

>Banfotech: ... ti ripeto, prendi il libro che ti ho già linkato e comincia a studiare bene quello.

Allego l'indice così ti rendi conto ...

Guglielmo

Guida Arduino (Indice).pdf (49.6 KB)

Datman:
Ciao, Maurizio
Il link QUESTA non funziona... È a una tua cartella temp!
Se anziché QUESTA scrivessi il titolo, resterebbe comprensibile anche qualora il sito, in futuro, non esistesse più.

Sorry, mi cospargo il capo di cenere.
Ho aperto il link sul browser e ho copiato l'indirizzo da li senza accorgermi che mi aveva scaricato una copia locale temporanea e mi stava visualizzando quella :-[

Ho corretto il link del post, prova a riprovare, così vediamo se ora è a posto.

Maurizio

Banfotech:
Ho deciso di usare l'ATMEGA328P, ed effettivamente sul sito della Microchip ci sono tonnellate di documenti... Tra cui 427 pagine di datasheet e decine di application notes...

Ad esempio sul datasheet a pagina 160 c'è la sezione dedicata al bus SPI.

Ci sono un paio di esempi molto semplici, ma nulla di più...
Certo è molto ben dettagliato Bit per Bit il bus questo si.

Si, sui datasheet ci sono i dettagli spinti, non gli esempi per nabbi, nei tutorial in rete trovi descrizioni più sommarie ma vari esempi di utilizzo, poi dipende da quello che devi fare.
E poi c'è il mondo delle librerie che mascherano i vari comportamenti.
Anche qui c'è di tutto, per cui ci si basa un po' sulle esperienze chiedendo sul forum o provando.

Maurizio

Purtroppo o per fortuna è soggettivo.

Purtroppo si dovrebbe iniziare studiando l'informatica per quello che è; cioè una scienza
Per fortuna non devo studiare come è fatto ogni circuito all'interno della MCU (e la CPU).

Purtroppo per capire il concetto di "Architettura Hardware" devo avere studiato elettronica di base e frequentare un corso che descrive le varie architetture.

Per fortuna fare lampeggiare dei led non richiede anni di studio, vero farne lampeggiare diversi a seguito della pressione di vari pulsanti già è più complesso e qui si presenta il conto; cioè quando non riesci o abbandoni, o studi e spesso fai il percorso al contrario.

Per fortuna l'essere umano è un programmatore nato (l'unico); nel senso che questa dote (capacità) è innata.

Purtroppo l'essere umano non sempre è cosciente di essere un programmatore; da il meglio di sé mesi prima delle ferie.

Alle volte purtroppo crede di potere fare più cose contemporaneamente; guidare, amoreggiare, ascoltare musica e ordinare da mangiare, si accorge (forse) di avere fallito quando tampona.

Purtroppo non esiste un libro che inizia dalla A e finisce alla Z e se esistesse sarebbe fatto di 50.000 pagine.

Tra cui 427 pagine di datasheet e decine di application notes...

La bibbia e il suoi manuali d'uso e interpretazione. :slight_smile:

Ciao.

Dipende anche fino a quale livello ci si vuole spingere. Se mi basta far lampeggiare un led dopo due mesi o se voglio fare un robot umanoide da combattimento in una settimana... (Ogni riferimento alla sindrome di Gundam è puramente voluto)

speedyant:
o se voglio fare un robot umanoide da combattimento in una settimana

Un grande robot umanoide, la cosa più importante è che sia GRANDE :grin:

Banfotech:
Sto cercando un manuale per rispolverare il C e la programmazione, me la cavo discretamente bene con la progettazione elettronica, ma purtroppo, derivo da una scuola dove "spellacavi" e "pigiatasti" erano due cose completamente distinte, cosa che oggi, non si può più considerare ovviamente...

Secondo me nessun libro su Arduino sarà mai un manuale di programmazione in senso generale, conterrà magari molti esempi contestuali alla gestione di qualche sensore/attuatore/display/libreria, ma addirittura un libro sul C (o altro linguaggio) potrebbe non esserlo, nel senso che potrebbe spiegare il linguaggio e le sue caratteristiche/sintassi/semantica, ma l'impostazione mentale al problem solving formalizzato secondo una certa logica strutturata e modulare è una parentesi a parte da imparare con l'esperienza e la lettura delle soluzioni adottate dagli altri... Ricordo il corso provinciale post diploma dove per settimane e settimane la "programmazione" è consistita nello scrivere algoritmi in pseudocodice con carta e penna e disegnare flowchart, e solo mooolto dopo sono stati introdotti i linguaggi veri e propri (COBOL e RPG, sigh...) e ci è stato permesso di mettere i diti sulle tastiere (ovviamente di terminali seriali testuali monocromatici) :slight_smile: Questo per ribadire quanto già detto che questo campo è un mosaico da comporre da fonti diverse, non esiste IL libro sacro... anche se esistono buoni libri e pessimi libri :stuck_out_tongue: Un buon punto di partenza sarebbe cominciare da subito a impostare la logica in modo non bloccante... che nessun manuale insegna MAI :roll_eyes:

Ovvero: il programma deve scorrere sempre alla massima velocità possibile, bloccandolo solo quando si è pienamente coscienti di poterlo fare traendone vantaggio. Io, ad esempio, di solito blocco il flusso del programma per le impostazioni tramite encoder: in un while() che restringe il ciclo al suo interno finché non viene premuto l'encoder, metto la lettura dell'encoder e la visualizzazione del parametro che si sta modificando. In questo modo ottengo la massima rapidità di risposta alla rotazione dell'encoder pur non usando gli interrupt, che restano disponibili per altre eventuali cose in cui sono essenziali.

Il flusso, però, non può essere bloccato se, nel frattempo, deve continuare ad acquisire dati o produrre segnali in uscita: ad esempio, se è un orologio, probabilmente non è un problema se non continua a scorrere l'ora sul display mentre la imposto (che vuole anche dire che indicherebbe un orario non corretto); viceversa, se l'apparato deve acquisire in continuazione dei dati, non posso permettermi di perderne ogni volta che seleziono la pagina da visualizzare sul display.