-
.
Voltmetro 0..30v + Amperometro 5A su display LCD I2C 16x2
. -
.
Se lo regalo al mio nipotino finisce nel secchio della spazzatura dopo due settimane. 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. . -
.
--- 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. 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 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)
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.
--- fine terza parte ---. -
.
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.. -
.
Ciao, effettivamente mi dispiace se non sono riuscito a rendere l'idea del proggetto complessivo. 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 !
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.
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 !
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.
. -
.
quando dici
"e' un sistema che assomiglia molto all' AudioPrecision System One"
stai parlando di questo apparato?
. -
.
Si il System One Audioprecision 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.
Test programma del circuito per porta parallela :
Tutto il kit per gli esperimenti :
. -
.
...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.... -
.
Buonasera, seguo con interesse. 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. . -
.
Concordo anch'io , sarebbe un ottima cosa ...un corso per principianti su Arduino...vediamo l'amministratore, cosa ne pensa.... . -
.
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/. -
.
iniziamo con uno spazio dedicato, mi sembra una buona idea, approvo! . -
.
docelektro (non mi trovate anche su facebook)
- 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 . -
.
Creata sezione specifica e spostata la discussione.
Prometto che se mi smuovete un po' d'interesse, lo provo pure io.. -
.
Ho cominciato i primi esperimenti con l'arduino e il led che lampeggia. Tutto funziona benissimo ! 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.
Edited by Abdahl - 3/20/2021, 08:09 PM.