Arduino Uno programmazione e utilizzo.

proviamo a spippolare.

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    Wunderlich -B
    peperonecrusco_lr

    Group
    Mastro Elettronico
    Posts
    3,399
    Location
    Galbiate (LC)

    Status
    Offline
    Voltmetro 0..30v + Amperometro 5A su display LCD I2C 16x2

    volt

    :woot:
     
    Top
    .
  2.  
    .
    Avatar

    Wunderlich
    cipollacipollacipollacipolla

    Group
    Member
    Posts
    1,561

    Status
    Offline
    Se lo regalo al mio nipotino finisce nel secchio della spazzatura dopo due settimane. :cry: Bisognerebbe creare una apps per l' iphone =/ Il solo dataheet dell' Atmega328p (16Mhz - 16MIPS - Flash 32kB - EPROM 1kB - RAM 2kB) sono la bellezza di 662 pagine. :b:
     
    Top
    .
  3.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Member
    Posts
    517

    Status
    Offline
    --- parte terza ---

    Bounpomeriggio, prima di collegare l'arduino (arrivato domenica scorsa) ho dovuto ripristinare il mio vecchio PC pentium4 2.8GHz 32bit per fare degli esperimenti con la porta parallela. Per queste prove sarebbe sempre conveniente utilizzare un vecchio PC magari acquistato per 15€ su ebay oppure riciclato aggratis dall' isola ecologica. :b: La possibilita' di bruciare perfino la scheda madre non e' poi cosi remota. Basta una presa di terra scollegata e un rientro di tensione sui pin delle porte logiche. Bene a questo punto non mi resta che costruire un piccolo modulo di test della che monitorizza tutte le linee elettriche. Dopodiche' puo' si puo' provare ad accendere e spegnere i led attraverso il programma scritto con il compilatore GCC di linux (mint 17.1 mate 32 bit - ma dovrebbe funzionare bene anche con le utilme versioni a 64bit). Il circuito di test puo' essere realizzato in molti modi. Ecco un piccolo riassunto di quello che si trova in rete :
    Prof. V.Villa Porta parallela con led e resistenza
    Prof. V.Crapella interfaccia parallela con TTL
    Elektor Porta parallela a transistor
    Il PCB di Elektor Aprile 1996 e' davvero interessante :b: Altro link Elektuur 4-1996 (rivista online)
    Io per il mio PCB ho utilizzato il sistema con resistenze da 10K e led superluminosi. Questo mi consente di mantenere la corrente nei limiti di 0.3..0.4mA per ogni linea e di fornire una certa protezione ESD. (che non guasta mai)
    parasch
    Il programma per il compilatore GCC sarebbe il seguente : (link anche su onlinegdb compiler)
    CODE
    // PROGRAMMA TEST PORTA PARALLELA - COMPILATORE GCC LINUX-MINT 17.1 MATE 32 bit -

    #include <stdio.h>      // printf()
    #include <stdlib.h>     // exit()
    #include <unistd.h>     // ioperm()
    #include <time.h>       // nanosleep()
    #include <sys/io.h>     // outb() e inb()

    /* Gli indirizzi I/O della porta parallela (se c'e') sono assegnati dal BIOS all' accensione del pc.
    * Se non diversamente specificati sono : prima porta LPT1 = 0x378, seconda porta LPT2 = 0x278, terza porta 0X3BC
    * Si utilizza il modo di funzionamento normale (SPP = Standard Parallel Port).
    */

    #define BASE    0X378     // Indirizzo registro base WRITE : bit0..7=pin dati0..7
    #define STATUS  BASE+1    // Indirizzi registro di stato READ : bit0,1=rsvd, bit2=IRQstat, bit3=Error,
                             // bit4=Select, bit5=PaperEmpty, bit6=Acknowledge, bit7=Busy.
    #define CONTROL BASE+2    // Indirizzo registro di controllo WRITE : bit0=Strobe(neg), bit1=AutoFeed(neg),
                             // bit2=Init, bit3=Select(neg), bit4=EnIRQ, bit5=ExtendedMode, bit6,7=rsvd.

    // delay = sleep() e nanosleep()

    int main (int argc,char*argv[])
    { char a,i;
     struct timespec tempo;

     tempo.tv_sec=0;
     tempo.tv_nsec=200000000L;  // 0.2S = 200mS = 200'000 uS = 200'000'000 nS

     if(ioperm(BASE,3,1))  // permesso di accesso all'indirizzo I/O 0x378 e 3 successivi (0x379, 0x37a), 1=TRUE
     { printf("Errore ioperm : processo terminato \n");
       exit(0);  
     }

     // LAMPEGGIA 8 DATA PIN (bit 0..7 linee data D0..D7)
     for (i=0; i<20; i++)
     { outb(0xFF,BASE);     // scrive nel registro data byte ACCENDE 8 DATA LED
       nanosleep(&tempo,NULL);
       outb(0x00,BASE);     // scrive nel registro data byte SPEGNE 8 DATA LED
       nanosleep(&tempo,NULL);  
      }

    // LAMPEGGIA 4 CONTROL PIN (Strobe(neg), LineFeed(neg), Init, Select(neg))

     for (i=0; i<20; i++)
     { outb(0x04,CONTROL);     // scrive nel registro control byte ACCENDE 4 CONTROL LED
       nanosleep(&tempo,NULL);
       outb(0x0B,CONTROL);     // scrive nel registro control byte SPEGNE 4 CONTROL LED
       nanosleep(&tempo,NULL);  
      }

     a = inb(STATUS);     // legge il registro di stato
     printf("Registro di stato = %X \n",a);
     printf("Bit 7 Linea BUSY = ");
     if((a & 0X80)>0) printf("1 (electric low) "); else printf("0 (electric high)"); printf("\n");
     printf("Bit 6 Linea ACKNOWLEDGE = ");
     if((a & 0X40)>0) printf("1"); else printf("0"); printf("\n");
     printf("Bit 5 Linea PAPER EMPTY = ");
     if((a & 0X20)>0) printf("1"); else printf("0"); printf("\n");
     printf("Bit 4 Linea SELECT = ");
     if((a & 0X10)>0) printf("1"); else printf("0"); printf("\n");
     printf("Bit 3 Linea ERROR = ");
     if((a & 0X08)>0) printf("1"); else printf("0"); printf("\n");
     printf("Bit 2 IRQ Status = ");
     if((a & 0X04)>0) printf("1"); else printf("0"); printf("\n");
     printf("Bit 1 Reserved = ");
     if((a & 0X02)>0) printf("1"); else printf("0"); printf("\n");
     printf("Bit 0 reserved = ");
     if((a & 0X01)>0) printf("1"); else printf("0"); printf("\n");

     printf("Programma terminato \n");
     return 0;
    }

    Mi scuso per il programma troppo lungo e noioso, ma i commenti sarebbero utili per definire meglio le funzioni dei vari registri. Il programma fa' lampeggiare per 4 secondi gli 8 led rossi dei dati. Poi per 4 secondi i led gialli dei controllo, infine legge le linee del registro di stato. Poi provero' anche a far lampeggiare i led dell' arduino. bye1

    --- fine terza parte ---
     
    Top
    .
  4.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Allievo Radiomeccanico
    Posts
    721
    Location
    Milano / Martina Franca

    Status
    Offline
    scusa la franchezza della domanda Abdahl, ma non capisco il senso della realizzazione, mi spiego:

    probabilmente stai progettando qualcosa e questo tuo post fa parte del progetto che hai in mente, ma in onestà a cosa serve ?
    i pc ormai da tempo non sono dotati della porta parallela, che senso ha quindi?
    è forse un tester di porta parallela? (si in effetti il titolo del listato è quello!)
    a quale scopo? hai forse un dispositivo custom che vorresti controllare con un Arduino?

    la premessa iniziale mi sembrava fosse quella di cominciare a capire come funziona Arduino, magari con qualche linea di codice terra terra...
    magari ho capito male..ma credo di aver interpretato i vari post come una generale necessità di trovare qualche buon consiglio ed esempio per iniziare...possibilmente con qualcosa di più pratico e concreto...
    io ad esempio ho in mente un progetto per far muovere un piccolo carrello lungo una rotaia di circa 60cm e comandare con un pulsante il motore in modo che ad ogni pressione il carrello cambi direzione, fermandosi ogni volta alla fine della rotaia attraverso due fine corsa posti agli estremi. Si può fare senza ricorrere all'elettronica, basta qualche relè e quindi potrebbe apparire inutile, ma se si considera l'aspetto logico, ci sono almeno tre-quattro spunti che possono essere utili per molte applicazioni diverse.
     
    Top
    .
  5.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Member
    Posts
    517

    Status
    Offline
    Ciao, effettivamente mi dispiace se non sono riuscito a rendere l'idea del proggetto complessivo. :unsure: In realta' "proggetto" e' una parola troppo grossa, direi quindi esperimenti del tempo libero causa lockdown. L'esperimento consiste nel collegamento del modulo arduino (o eventuale PIC) con la porta parallela del PC in modo da creare un bus dati bidirezionale di 4 bit (nibble) in ingresso e 4 bit in uscita.
    Q&A
    Perche' la porta parallela ? =/
    Mi sembra il sistema piu' semplice e diretto per collegare l'arduino (o PIC) al PC per la comunicazione bidirezionale dei dati.
    (La USB e la RS232 hanno bisogno di circuiti supplementari)

    Ma la porta parallela non la utilizza piu nessuno ! :o:
    Un vecchio PC recuperato al centro ecologico (talvolta anche a costo zero) sarebbe l'ideale. Se brucia qualcosa (speriamo di no) pazienza. Ma e' anche possibile utilizzare una scheda PCI in uno slot libero. Basta anche un Pentium III o 4 32bit con linux mint 17.1 mate 32bit.

    Perche' collegare Arduino (o PIC) al PC ? ;_;
    L'arduino ha dei convertitori A/D con i quali e' possibile acquisire dati analogici. Ma anche delle linee PWM per modulare delle tensioni. Il PC invece ha la possibilita' di visualizzare dati e grafici ed inviare comandi tramite tastiera e mouse. Per chi l'ha utilizzato e' un sistema che assomiglia molto all' AudioPrecision System One.

    Ma il 13 aprile 2021 inizia il sacro mese di Ramadan. :P
    Meglio. Con gli esperimenti di elettronica si pensa di meno al cibo. Eppoi comunque noi Arabi ci abboffiamo di mangiare dopo il tramonto.

    Ma chi te lo fa fare ? =/
    Per il piacere di realizzare e condividere i miei esperimenti di elettronica. Il software che scrivo e l'hardware che disegno per utilizzo hobbistico puo' essere riciclato da chiunque ne' abbia bisogno.

    Ma se mi si brucia il PICCI e' colpa di Abdahl !
    :f:
    Embe' no ! Sono esperimenti elettronici divertenti. Effettivamente c'e' il rischio di bruciare tutto. Ma come ogni esperimento, talvolta puo' andare bene o talvolta male. L'importante e' non prendere la scossa e non utilizzare il PC dell' ufficio dove si tengono dei dati importanti. Tutto il resto si ricompra.

    bye1
     
    Top
    .
  6.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Allievo Radiomeccanico
    Posts
    721
    Location
    Milano / Martina Franca

    Status
    Offline
    quando dici
    "e' un sistema che assomiglia molto all' AudioPrecision System One"

    stai parlando di questo apparato?

    s-l1600

    s-l1600_1
     
    Top
    .
  7.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Member
    Posts
    517

    Status
    Offline
    Si il System One Audioprecision :b: Mi sembra di ricordare che utilizzava l' IEE488 o comunque una scheda proprietaria. E' quasi tutto pronto, spesa totale circa 50€ su amazzon. La scheda per la connessione con la porta parallela l'ho realizzata sulla millefori. Ma in alternativa sarebbe stato ottimo anche il circuito di Elektor. Ora mi dedico ad un po' di prove con arduino. bye1
    Test programma del circuito per porta parallela :
    PARA
    Tutto il kit per gli esperimenti :
    ARDU0
     
    Top
    .
  8.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Allievo Radiomeccanico
    Posts
    721
    Location
    Milano / Martina Franca

    Status
    Offline
    ...insomma c'avevo visto giusto diciamo che non siamo sul livello principianti, per capirci!
    adesso forse ha un certo senso logico, rimane sempre aperta la proposta (se condivisa dall'amministratore), di aprire uno spazio per chi veramente inizia a sperimentare con Arduino dai principi...
     
    Top
    .
  9.  
    .
    Avatar

    Wunderlich
    cipollacipollacipollacipolla

    Group
    Member
    Posts
    1,389

    Status
    Offline
    Buonasera, seguo con interesse. :b: In effetti sarebbe utile un piccolo corso per principianti sull' argomento PIC, Arduino e/o Raspberry. Ho visto che Il PIC e' stato molto utile anche per migliorare la strumentazione del laboratorio. (Oscillatore Philips di Scalumm). Il bello di questo sito e' soprattutto l'elettronica valvolare analogica con qualche piccola eccezzione digitale. bye1
     
    Top
    .
  10.  
    .
    Avatar

    Wunderlich -A
    cipollacipollacipollacipollacipolla

    Group
    Allievo Radiomeccanico
    Posts
    2,376
    Location
    Siena

    Status
    Offline
    Concordo anch'io , sarebbe un ottima cosa ...un corso per principianti su Arduino...vediamo l'amministratore, cosa ne pensa....
     
    Top
    .
  11.  
    .
    Avatar

    Radiotron
    Radiomeccanico Amministratore

    Group
    Administrator
    Posts
    16,669

    Status
    Offline
    Sono apertissimo, se volete apro una sezione dedicata del forum e ci trasferisco questa discussione e altre che verranno.
    Chi si propone per la docenza?

    Ho visto che su EasyEda ci sono le librerie per Arduino.
    Si possono realizzare progetti con Arduino, stato solido, valvole.... tutto insieme!

    https://easyeda.com/
     
    Top
    .
  12.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Allievo Radiomeccanico
    Posts
    721
    Location
    Milano / Martina Franca

    Status
    Offline
    iniziamo con uno spazio dedicato, mi sembra una buona idea, approvo!
     
    Top
    .
  13.  
    .
    Avatar

    docelektro (non mi trovate anche su facebook)
    cipollacipollacipollacipolla

    Group
    Member
    Posts
    1,926
    Location
    CN, vicino savigliano

    Status
    Offline
    pensa che io l'ho "dovuto" conoscere perchè nelle schede delle luminarie dei luna park partivano le "logiche" e non c'era altar soluzione che non mettere arduino con una serie di finali a transistor a pilotare i triac
     
    Top
    .
  14.  
    .
    Avatar

    Radiotron
    Radiomeccanico Amministratore

    Group
    Administrator
    Posts
    16,669

    Status
    Offline
    Creata sezione specifica e spostata la discussione.
    Prometto che se mi smuovete un po' d'interesse, lo provo pure io.
     
    Top
    .
  15.  
    .
    Avatar

    UV
    cipollacipollacipolla

    Group
    Member
    Posts
    517

    Status
    Offline
    Ho cominciato i primi esperimenti con l'arduino e il led che lampeggia. Tutto funziona benissimo ! :b: Noto anche che il software da caricare sul PC funziona meglio su Linux che non su Windows 8.1. Beh tanto di guadagnato visto che la destinazione finale sara' di programmare con quel sistema operativo. Le funzioni del linguaggio C-arduino sono descritte sul sito online. reference (en) Dopo qualche altro esperimento demenziale, come quello del led oscillante tipo supercar inizio a collegare tutto con la porta parallela del PC. Effettivamente se riusciro' a comunicare con la porta parallela sara' un gran risultato perche' questo mi permette di utilizzare anche microcontroller nudi e crudi, senza USB o RS232 ma con solo 8 linee TTL 4 in lettura e 4 in scrittura. bye1

    led

    Edited by Abdahl - 3/20/2021, 08:09 PM
     
    Top
    .
105 replies since 6/3/2021, 11:21   2901 views
  Share  
.