PULSANTI-LED

 

Identificazione progetto

progetto 1

autore

email

note

Pulsanti-led su microGT-mini

Daniele Scaranaro

daneel16@libero.it

6 pulsanti collegati al portC accendono led al portB

Premessa

Progetto di esempio per iniziare la programmazione con la microGT-mini a 20MHz, con 6 pulsanti collegati al portC che comandano i rispettivi led collegati su portB. Questa realizzazione permette di avere una base di partenza alla 'hello world' per iniziare a programmare e allo stesso tempo permette di supportare il test di piccoli progetti seguenti.

Schema elettrico con descrizione

 


Download schema elettrico in formato bmp

Figura 1

Nella figura 1 potete vedere lo schema della micro-GT mini con l'aggiunta dei pulsanti e delle resistenze (in basso e a sinistra nel disegno).


Figura 2



La realizzazione prevede 2 schedine millefori come in figura 2.

La prima scheda (destra) si compone di 6 resistenze da 10K che mettono in 'Pull-up' gli ingressi da RC0 a RC5 mentre la seconda è composta di 6 pulsanti (sinistra).

Questa soluzione permette alcuni vantaggi:

  1. possibilità di riutilizzare singolarmente le 2 schede

  2. possibilità di passare dalla modalità 'pull-up' alla 'pull-down' invertendo solo 2 cavi (rosso e grigio, figura 3)


figura 3


figura 4



Circuito stampato descrizione

La semplicità della realizzazione permette anche di fare pratica di saldatura per chi si vuole avvicinare all'elettronica e nello stesso tempo imparare qualcosa di più sul funzionamento dei microcontrollori con programmazione in ANSI-C. I pulsanti sono collegati insieme da un lato al cavo rosso, mentre l'altro lato và al connettore femmina che si inserirà nella scheda delle resistenze.

Le resistenze hanno un lato collegato insieme al cavo grigio, mentre l'altro lato di ogni resistenza si collega con il connettore femmina che verrà inserito al portC della microGT mini.

Guardando le foto tutto è più chiaro.

Firmware

Potete scaricare il file zippato dell'intero progetto in Mplab al segunte indirizzo-> download pulsanti_Led

 

Iniziamo dal file 'settaggi.h' qui di seguito:

void settaggi(){

TRISA=0; //tutte uscite digitali

TRISB=0; //tutte uscite digitali

TRISC=0xFF; //tutti ingressi digitali

}



Ecco qui di seguito il file principale:



/************************************

SCARANARO DANIELE *

* progetto pulsantiera - led *

* Piattaforma: MicroGT-mini *

* Microcontroller: 16F876A *

* 12/02/2012 *

* Nota: Pulsanti normal->1 *

* pressed -> 0 *

* Resistenze ->Pullup 10k *

***********************************/



// 6 led collegati al PORT B

// 6 pulsanti collegati al PORT C, cablati N.A. verso massa



#include <pic.h>

#include "delay.h"

#include "settaggi.h"

#define PIC_CLK 20000000



#define P1 RC0 //pulsante P1

#define P2 RC1 //pulsante P2

#define P3 RC2 //pulsante P3

#define P4 RC3 //pulsante P4

#define P5 RC4 //pulsante P5

#define P6 RC5 //pulsante P6



#define LD1 RB0 //led 1 su RB0

#define LD2 RB1 //led 1 su RB1

#define LD3 RB2 //led 1 su RB2

#define LD4 RB3 //led 1 su RB3

#define LD5 RB4 //led 1 su RB4

#define LD6 RB5 //led 1 su RB5

void main(){

settaggi();

while(1){

/************* gestione pulsante P1 con LED 1 **************/

if(P1==0){

DelayMs(100); //ritardo antirimbalzo

if(P1==0){

LD1=1; //accendo LED se pulsante premuto

}

}

else{

LD1=0; //spengo led se pulsante non è premuto

}

 

/************* gestione pulsante P2 con LED 2 **************/

if(P2==0){

DelayMs(100); //ritardo antirimbalzo

if(P2==0){

LD2=1; //accendo LED se pulsante premuto

}

}

else{

LD2=0; //spengo led se pulsante non è premuto

}

/************* gestione pulsante P3 con LED 3 **************/

if(P3==0){

DelayMs(100); //ritardo antirimbalzo

if(P3==0){

LD3=1; //accendo LED se pulsante premuto

}

}

else{

LD3=0; //spengo led se pulsante non è premuto

}

/************* gestione pulsante P4 con LED 4 **************/

 

if(P4==0){

DelayMs(100); //ritardo antirimbalzo

if(P4==0){

LD4=1; //accendo LED se pulsante premuto

}

}

else{

LD4=0; //spengo led se pulsante non è premuto

}

/************* gestione pulsante P5 con LED 5 **************/

 

if(P5==0){

DelayMs(100); //ritardo antirimbalzo

if(P5==0){

LD5=1; //accendo LED se pulsante premuto

}

}

else{

LD5=0; //spengo led se pulsante non è premuto

}

 

/************* gestione pulsante P6 con LED 6 **************/

if(P6==0){

DelayMs(100); //ritardo antirimbalzo

if(P6==0){

LD6=1; //accendo LED se pulsante premuto

}

}

else{

LD6=0; //spengo led se pulsante non è premuto

}

}

}

 

Scarica il programma completo compreso il file .hex in C16 per MpLab -> download pulsanti_Led


Il precedente codice, scritto in C con l'ambiente Mplab della microchip, è molto semplice e potete vedere i commenti riga per riga.



Potete vedere un filmato della micro-gt mini in funzione al seguente link

 



 

Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia

 

Note aggiuntive

Alcuni si chiederanno che senso abbia accendere dei led tramite dei pulsanti passando attraverso un microcontrollore, perchè non collegare semplicemente i led ai pulsanti?.

RISPOSTA: se questa semplice operazione riesci a farla fare al microcontrollore vuol dire che hai cominciato a capirci qualcosa, tutti cominciano dal basso e dalle cose semplici.    J


 

  Pagina precedente