Go Down

Topic: AiutateCi ad aiutarVi (Read 861 times) previous topic - next topic

Standardoil

May 23, 2019, 09:32 pm Last Edit: Jun 14, 2019, 10:25 pm by Standardoil
Ovvero se si parte col piede giusto si va come un treno....

Questo thread è dedicato a chi chiede aiuto, esperti o inesperti, giovani o vecchi, tutti abbiamo avuto bisogno di aiuto.

Vorrei solo chiedere, e spero in questo di non essere solo, che ci aiutiate ad aiutarvi ...
... pochi semplici consigli, che più di essere una "imposizione" siano una "indicazione", fidatevi che seguire le buone pratiche si fa prima che a non seguirle (peraltro se le hanno inventate una ragione ci sarà...)

Nessuna di questi consigli è obbligatorio, ma diciamo che "invitano" ad aiutare, oltre che mettere sulla strada giusta per aver meno bisogno di aiuto

Ed ora la parte utile, l'elencazione:

1) indenta bene il codice: ne discutiamo qui:
https://forum.arduino.cc/index.php?topic=617572.msg4185233#msg4185233

2) metti un titolo che descriva il problema
https://forum.arduino.cc/index.php?topic=617572.msg4191852#msg4191852
che stai cercando aiuto per un problema lo sappiamo già, se sei qui sei qui per quello...

3) Spiegalo bene, il tuo problema, perchè noi non lo conosciamo:
https://forum.arduino.cc/index.php?topic=617572.msg4197803#msg4197803

4) Assicurati di avere gli strumenti necessari: ovvero conoscenze, conoscenze e conoscenze (lo ho già detto conoscenze?)
https://forum.arduino.cc/index.php?topic=617572.msg4209434#msg4209434

5a e 5b) prova, prova fino alla nausea (e poi ricomincia)
https://forum.arduino.cc/index.php?topic=617572.msg4210481#msg4210481
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

Standardoil

#1
May 24, 2019, 11:44 am Last Edit: May 26, 2019, 12:22 pm by Standardoil
E allora, rotto il ghiaccio, vado io con la prima proposta:
Consiglio zero: posta il codice ben indentato e formattato

da notare che non propongo uno specifico stile di formattazione, quello standard dello IDE va benissimo, o anche uno personale, ma UNO stile ci vuole

c'è una ragione tecnica ottima per indentare il codice:
viene istintivo "seguire" i varii branch del programma, quel'è la parte if, quale la parte else, cosa fa dentro nel for...

Personalmente io non aiuterò più chi non lo fa
Ragione: è talmente semplice farlo con la formattazione automatica che se uno non lo fa  è o un completo incapace (inutile aiutarlo, gli serve altro) o un completo maleducato (da ignorare)
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

Standardoil

#2
May 29, 2019, 01:52 pm Last Edit: May 30, 2019, 10:06 pm by Standardoil
Suggerimento due, (che per la verità non era proposto da me)
Mettete dei titoli che siano significativi
Aiuto per un problema NON lo è.... per nulla, tutti quelli che hanno bisogno di aiuto hanno un problema
Aiuto sono senza un problema lo è, in effetti è molto significativo, ma non in una direzione esplicativa
mettiamola in questa maniera: voi siete dei fruttivendoli, in una strada dove "ogni" porta è un negozio di fruttivendolo, rispondete a questa domanda: "perché il cliente deve venire a comperare proprio le MIE mele?"
mettete un titolo che "attiri" l'attenzione di può aiutarvi:
"Devo collegare un GPS e una radio HC12 allo stesso arduino, mi manca una seriale, come posso fare?" è un po' lungo, ma rende subito l'idea
"Non mi vanno i servo quando uso la seriale: è normale?" è ben fatto
ah, per inciso:
Se scrivete non mi vanno i servi io vi ignorerò, la ragione è semplicissima:
il 'C' è un linguaggio piuttosto critico nella forma (maiuscole/minuscole e similia)
se NON riuscite nemmeno a coniugare bene l'Italiano a "maggior" ragione non saprete scrivere in 'C'
il plurale di servomotore (abbreviato servo) fa servomotori (abbreviato ancora servo)
condizione propedeutica per scrivere bene in un qualsiasi linguaggio ('C' compreso) è scrivere bene almeno nella propria lingua madre
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

Standardoil

#3
Jun 04, 2019, 07:00 am Last Edit: Jun 04, 2019, 07:01 am by Standardoil
Suggerimento tre
Descrivi bene il problema, non chiedere come fare per fare quello che vuoi fare
Non è per mancanza di fiducia, ma spesso le persone si "incastrano" cercando una via per una soluzione che 'credono' sia giusta o ideale
Descrivi bene il problema, che ti possiamo aiutare a trovare la soluzione
Esempio, capitato spesso, leggere un file 'strano' che in realtà potremmo scriverci noialtri 'più comodo'
Quindi descrivi bene il problema, ma descrivilo tutto, che non capiti dopo aver fatto il grosso del lavoro, di scoprire che deve andare in ambiente ostile, oppure che vuoi che vada a batteria, o che verrà montato su una moto.
Ci tengo molto all'ultima riga, perchè spesso mi è capitato di "buttare via tutto il lavoro" perchè chi chiedeva aiuto si era "dimenticato" le cose più importanti, per il futuro: evitiamo
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

AmericanDreamer

Idea numero 5:
Metti lo schema, mettilo tutto
E prova i componenti, provali tutti
Ne ho viste io di macchine che voi umani...
Macchine utensili che non vanno
E poi è solo la spia di acceso bruciata
E giù colpe al povero manutentore

Standardoil

#5
Jun 13, 2019, 10:18 pm Last Edit: Jun 13, 2019, 10:33 pm by Standardoil
Suggerimento 4
gentilmente offerto da Sua Moderazione Guglielmo (e non è una presa in giro)
Copio e incollo integralmente:

con il copia/incolla si arriva a far lampeggiare un LED e poco altro. Se volete veramente realizzare qualche cosa, dovete trovare il tempo e dedicare tale tempo allo studio

cosa dire? che ha ragione! ecco cosa debbo dire...
la possibilità che un programma "raccattato in rete e copiincollato senza guardare troppo per il sottile" vada bene per le vostre specifiche esigenze è pressocchè nulla
significa che "purtroppo" dovete fare le cose alla vecchia maniera:
-Studiare i principi della programmazione
-Studiare il linguaggio
e questi sono i passi propedeutici, pesantucci, ma almeno si fanno una volta sola
-Capire il problema, che nautrlamente va fatto per ogni problema
-Studiarne una soluzione
- questa riga è volutamente vuota
-Tradurre nel linguaggio la vostra soluzione
- questa riga è volutamente vuota

Le righe vuote:
Le righe vuote sono per un'aggiunta mia, che forse non tutti sarebbero d'accordo, la vendo per quello che è: una opinione personale:
Ri-prendete in mano il problema, riprendete in mano la soluzione, riprendete in mano il programma, e "sfrondate", tagliate tutto quello che potete, cancellate tutto quello che potete, riducete al minimo tutte le variabili, tutti i cicli, tutte i comandi
per ogni variabile domandatevi: Mi serve per cosa? cosa ci scrivo? cosa mi indica? da dove la vado a prendere l'informazione che ci scriverò dentro?
Ricominciate da capo
Per ogni comando che scrivete domandatevi: perchè lo sto facendo? è proprio necessario? a cosa serve fare la cosa che sto facendo? e se non lo faccio?
Ricominciate da capo
state tranquilli che se fate così vedrete che il programma complicato lungo e pieno di comandi, si riduce a vista d'occhio, rimangono solo pochi comandi con poche variabili
Un grande dell'industria moderna, un certo Henry Ford non so se avete presente, diceva: quello che non c'é non si rompe
Io che ho imparato da lui, più modestamente dico: il programma corto ha meno spazio per contenere errori

ma tutto questo è una mia personale opinione

Per il momento fermiamoci alle prime righe:
studiare studiare studiare

sotto qui troverete alcuni link, gentilmente segnalati da Sua Moderazione

risorse on-line
http://cabestano.altervista.org/alterpages/files/TizianaMarsella-ProgrammareArduino.pdf

https://drive.google.com/file/d/0B2OYiD2XGofOVkpodUFNaFNweWM/view

Un buon libro (opinione personale: Molto Buono, vale la spesa)
Il libro di un certo Leonardo Miliani, da inchinarsi

Una collezione di link utili
https://www.amazon.it/Arduino-essenziale-linguaggio-librerie-elettronica/dp/8865374837
E naturalmente il "libro con la 'C' maiuscola": il K&R
che forse per un principiante non serve (balle, serve, ma è presto per prenderlo), lo prenderete al prossimo problema di programmazione
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

docdoc

Suggerimento numero 6: Sperimentare i singoli aspetti prima di metterli insieme in un progetto.

Non incaponitevi nel cercare di far funzionare un progetto che non funziona e che al suo interno ha vari componenti e varie librerie, perché le cause potrebbero essere tante.

Prima cosa, abituatevi a creare un progetto "di laboratorio" (o "lab") con UN solo componente per volta, se possibile usando uno degli esempi della relativa libreria. E se possibile fatelo sempre ogni volta che iniziate a lavorare per la prima volta con un componente/libreria, prima ancora di iniziare il vero progetto finale.

Tutto questo perché i problemi possono essere anche più di uno, ed è necessario imparare a saperli isolare per avvicinarsi sempre più al problema. Esempi:

* Un componente (es. un display LCD) non funziona come ci si aspetta, o almeno non con l'uso che ne state facendo: leggete la relativa documentazione per capire se quello che volete ottenere è previsto;

* Un componente non fa quello che dovrebbe fare ed il problema potrebbe essere software, ossia:

  • la libreria che usate non è quella adatta allo specifico componente ma magari ad uno molto simile: verificate nella documentazione della libreria se ci sono indicazioni in tal senso
  • la libreria che usate è giusta ma è obsoleta: nel dubbio, aggiornate sempre alle ultime versioni
  • non usate bene la libreria: vedere gli esempi a corredo e sperimentare separatamente

* Un componente non fa quello che dovrebbe fare ed il problema potrebbe essere hardware, ad esempio:

  • Componente difettoso: se lo è, anche con un "lab" lo potete capire, e farvelo sostituire o acquistarne uno migliore (ad esempio i sensori ad ultrasuoni HC-SR04 sono spesso fallati, mentre con gli SRF05, che costano pochi cent in più, mai avuto problemi)
  • è collegato in modo non corretto ad es. occorre un pin PWM e lo avete collegato ad uno non PWM: mantenete gli stessi collegamenti fisici e fate la prova con lo sketch "lab"
  • Il componente va in conflitto con un altro componente del progetto o le due librerie in qualche modo non sono compatibili: se isolate il problema con un "lab" separato per ognuno dei componenti, e da soli funzionano bene ma quando li mettete insieme no, significa che qualcosa di hardware o software è in conflitto per cui bisogna capire di cosa si possa trattare (e questo è il caso più difficile da gestire) cercando in rete e nei forum se qualcuno ha avuto lo stesso tipo di problema
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

Standardoil

#7
Jun 14, 2019, 10:24 pm Last Edit: Jun 14, 2019, 10:29 pm by Standardoil
Suggerimento 5a e 5b
che sarebbe un suggerimento doppio in quanto fusione di due differenti,
di AmericanDreamer (che non so ancora se è americano il sogno o il sognatore....)
Metti lo schema, mettilo tutto prova i componenti, provali tutti
Ovvero: evitiamo di "scoprire" dopo 18 pagine di post che il programma andava, era solo bruciato il diodo LED ( e potrei citare un caso anche più drastico che dopo molte pagine si scopre che non si sapeva bene cosa si aveva in mano...  accaduto pochi mesi fa, forse il sognatore americano ricorda, c'era anche lui, anzi eravamo tutti alla stazione sì, ma dormivamo tutti - Ivano Fossati)
anch'io, come AmericanDreamer, ho un passato tecnico, per l'esattezza tecnico d'assistenza esterna
non avete idea delle volte che mancava la corrente ma "La vostra macchina di M... non va di nuovo"
e andare fino in Brasile per scoprire che non avevano collegato un paio di fili scoccia alla grande (cioè, non a me che ci ho guadagnato le ferie, ma alla ditta molto)
provate ogni singola cosa, e poi ri-provatela
a mano
e poi, come suggerisce docdoc nel suggerimento 6 (rinumerato 5B, è il fratello maggiore del 5a)
prova i singoli pezzi del programma, provali tutti
prova accendere un LED, a tempo, poi fallo accendere a comando, poi metti un automatismo, poi attaccalo a internet
prova la comunicazione col pc, poi prova i comandi, poi prova da internet
prova attaccandoti ad internet ad un server "conosciuto", poi con quello che ti serve, che se parti con uno che non sai se "lui" va, poi non sai se "tu" arrivi
Se volete leggere gli originale, sono i post 4 e 7
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

Maurotec


Go Up