motorizziamo!
motorizziamo!
ho fatto il primo piccolo passo per il controllo di un motore da parte del raspberry!!
http://www.youtube.com/watch?v=EBrrVf_Zjtk
adesso vediamo come si utilizza il driver
http://www.youtube.com/watch?v=EBrrVf_Zjtk
adesso vediamo come si utilizza il driver
E pluribus unum
Re: motorizziamo!
questo è il codice attuale.
l'idea è di usare la successione di bit su 4 pin del GPIO per far ruotare il motore.
la velocità viene decisa dal delay.
il pin PHASE1 e 2 del L6219 che cosa fanno? se servono anche loro per invertire il senso di marcia come credo devo portarli fuori, settarli all'inizio o su qualche evento hardware o software.
basteranno 4 pin per far ruotare il motore? leggendo il datasheet mi pare di capire che questo controller supporta lo step, l'half step e il micro step e si passa da una modalità all'altra usando 8 pin per ognuna della 4 fasi del motore.
11-00-00-00
00-11-00-00
ecc..
01-00-00-00
00-01-00-00
ecc...
e così via.
ma magari interpreto male.
devo studiare. questo controller è mega potente! devo trovare una fonte di alimentazione!
dopo di che anche gli utenti normali potranno eseguirlo senza dover sudare
serve questa libreria naturalmente!
bisogna compilarlo con:
gcc -o nome_eseguibile nome_sorgente.c -l bcm2835
per farlo eseguire agli utenti normali, per via di problemi di accesso da parte della libreria a /dev/mem, bisogna fare come root:
chown root:root nome_eseguibile
chmod +s nome_eseguibile
l'idea è di usare la successione di bit su 4 pin del GPIO per far ruotare il motore.
la velocità viene decisa dal delay.
il pin PHASE1 e 2 del L6219 che cosa fanno? se servono anche loro per invertire il senso di marcia come credo devo portarli fuori, settarli all'inizio o su qualche evento hardware o software.
basteranno 4 pin per far ruotare il motore? leggendo il datasheet mi pare di capire che questo controller supporta lo step, l'half step e il micro step e si passa da una modalità all'altra usando 8 pin per ognuna della 4 fasi del motore.
11-00-00-00
00-11-00-00
ecc..
01-00-00-00
00-01-00-00
ecc...
e così via.
ma magari interpreto male.
devo studiare. questo controller è mega potente! devo trovare una fonte di alimentazione!
Codice: Seleziona tutto
#include <stdio.h>
#include <bcm2835.h>
int main(int argc, char **argv)
{
int i, parziale, num_giri, fine, ritardo;
if(argc!=3){
printf("sintassi errata!\ntelescopio numero_cicli lunghezza_ciclo\nnumero_cicli: numero di cicli dei 4 bit\nlunghezza_ciclo: ritardo in millisecondi tra un ciclo e l'altro\n");
return 1;
}
fine=atoi(argv[1])*4;
ritardo=atoi(argv[2]);
if (!bcm2835_init()){
printf("Errore inizializzazione bcm2835\n");
return 1;
}
bcm2835_gpio_fsel(RPI_GPIO_P1_15, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(RPI_GPIO_P1_19, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(RPI_GPIO_P1_21, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(RPI_GPIO_P1_23, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
i=0;
parziale=0;
num_giri=0;
for( i = 0; i < fine; i++ )
{
parziale++;
switch(parziale)
{
case 1:
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
break;
case 2:
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
break;
case 3:
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
break;
case 4:
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
num_giri++;
printf("giri: %d\n",num_giri);
parziale=0;
break;
}
delay(ritardo);
}
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
return 0;
}
serve questa libreria naturalmente!
bisogna compilarlo con:
gcc -o nome_eseguibile nome_sorgente.c -l bcm2835
per farlo eseguire agli utenti normali, per via di problemi di accesso da parte della libreria a /dev/mem, bisogna fare come root:
chown root:root nome_eseguibile
chmod +s nome_eseguibile
E pluribus unum
Re: motorizziamo!
devo continuare il progetto.
questo spiega più o meno come fare il circuitino.
l'unica cosa, come mai usa 6 pin dalla parallela?
ero convinto che ne bastassero 4!!
http://telin.ugent.be/~ps/stepper/
questo spiega più o meno come fare il circuitino.
l'unica cosa, come mai usa 6 pin dalla parallela?
ero convinto che ne bastassero 4!!
http://telin.ugent.be/~ps/stepper/
E pluribus unum
Re: motorizziamo!
qui pare che si debbano mandare 4 bit al controller:
http://www.mikroe.com/forum/viewtopic.php?f=97&t=51446
http://www.mikroe.com/forum/viewtopic.php?f=97&t=51446
E pluribus unum
Re: motorizziamo!
ecco la versione aggiornata del programma che dovrebbe fare gli half step:
appena riesco provo ad accenderlo e vedere se va
Codice: Seleziona tutto
#include <stdio.h>
#include <ctype.h>
#include <bcm2835.h>
int main(int argc, char **argv)
{
int i, parziale, num_giri, fine, ritardo;
if(argc!=3){
printf("sintassi errata!\ntelescopio numero_cicli lunghezza_ciclo\nnumero_cicli: numero di cicli dei 4 bit\nlunghezza_ciclo: ritardo in millisecondi tra un ciclo e l'altro\n");
return 1;
}
fine=atoi(argv[1])*4;
ritardo=atoi(argv[2]);
if (!bcm2835_init()){
printf("Errore inizializzazione bcm2835\n");
return 1;
}
bcm2835_gpio_fsel(RPI_GPIO_P1_15, BCM2835_GPIO_FSEL_OUTP); //PHASE 1
bcm2835_gpio_fsel(RPI_GPIO_P1_19, BCM2835_GPIO_FSEL_OUTP); //PHASE 2
bcm2835_gpio_fsel(RPI_GPIO_P1_21, BCM2835_GPIO_FSEL_OUTP); //I01
bcm2835_gpio_fsel(RPI_GPIO_P1_23, BCM2835_GPIO_FSEL_OUTP); //I11
bcm2835_gpio_fsel(RPI_GPIO_P1_22, BCM2835_GPIO_FSEL_OUTP); //I02
bcm2835_gpio_fsel(RPI_GPIO_P1_24, BCM2835_GPIO_FSEL_OUTP); //I12
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_24, LOW);
i=0;
parziale=0;
num_giri=0;
for( i = 0; i < fine; i++ )
{
parziale++;
switch(parziale)
{
case 1:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_24, HIGH);
break;
case 2:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_24, LOW);
break;
case 3:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_24, HIGH);
break;
case 4:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_24, LOW);
break;
case 5:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_24, LOW);
break;
case 6:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_24, LOW);
break;
case 7:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_24, HIGH);
break;
case 8:
//fasi
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_24, LOW);
num_giri++;
printf("giri: %d\n",num_giri);
parziale=0;
break;
}
delay(ritardo);
}
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_24, LOW);
return 0;
}
E pluribus unum
- Alì Baobab
- GranGianGnomo
- Messaggi: 2389
- Iscritto il: 04 ott 2005, 16:41
- Località: Ripalta Guerina
Re: motorizziamo!
esplode
- gdeber
- GranGianGnomo
- Messaggi: 1547
- Iscritto il: 13 set 2001, 10:40
- Località: Rivolta d'Adda
- Contatta:
Re: motorizziamo!
oppure si incendia
***L'assembler è alla base dell'universo®***
http://www.mecheros.it
http://www.mecheros.it
Re: motorizziamo!
in realtà non fa niente di niente
lo sto alimentando a 12V, non ho trasformatori a 24V.
ho scritto a quelli della Minebea Motor, produttori del motore.
sono gentilissimi! mi hanno detto che anche a 12V dovrebbe dare qualche segno di vita, tipo tentare di girare o girare a vuoto.
devo controllare meglio il circuito!
lo sto alimentando a 12V, non ho trasformatori a 24V.
ho scritto a quelli della Minebea Motor, produttori del motore.
sono gentilissimi! mi hanno detto che anche a 12V dovrebbe dare qualche segno di vita, tipo tentare di girare o girare a vuoto.
devo controllare meglio il circuito!
E pluribus unum
Re: motorizziamo!
niente.
nemmeno con alimentatore a 24V.
non da segni di vita.
qualcuno sa come potrebbe funzionare? qualcuno sa cosa devono valere i 6 input del L6219??
non ho trovato ancora un sito con scritto chiaramente cosa assegnare ad ogni input del chip.
I01, I02, I11, I12, Phase1 e Phase2!!
ma con tutte le prove che ho fatto dubito che sia quello il problema.
non tenta nemmeno di muoversi appena appena!!
nemmeno con alimentatore a 24V.
non da segni di vita.
qualcuno sa come potrebbe funzionare? qualcuno sa cosa devono valere i 6 input del L6219??
non ho trovato ancora un sito con scritto chiaramente cosa assegnare ad ogni input del chip.
I01, I02, I11, I12, Phase1 e Phase2!!
ma con tutte le prove che ho fatto dubito che sia quello il problema.
non tenta nemmeno di muoversi appena appena!!
E pluribus unum
- Alì Baobab
- GranGianGnomo
- Messaggi: 2389
- Iscritto il: 04 ott 2005, 16:41
- Località: Ripalta Guerina
Re: motorizziamo!
ALIMENTALO DIRETTAMENTE A 400V...... PER ME QUALCOSA FA.....
Re: motorizziamo!
questo pare avere le idee chiare:
http://ifev38g3.wordpress.com/2013/05/2 ... o-primera/
i vari I controllano la potenza, nessuna, 1/3, 2/3, massima.
le fasi ruotando determinano la rotazione del motore e il verso.
comunque non da segni di vita... devo provare un altro motore a questo punto.
oppure sarebbe utile un oscilloscopio
http://ifev38g3.wordpress.com/2013/05/2 ... o-primera/
i vari I controllano la potenza, nessuna, 1/3, 2/3, massima.
le fasi ruotando determinano la rotazione del motore e il verso.
comunque non da segni di vita... devo provare un altro motore a questo punto.
oppure sarebbe utile un oscilloscopio
E pluribus unum
Re: motorizziamo!
per completezza, i programmi funzionavano, era un problema di masse!
full step:
half step:
giusto per gli archivi
full step:
Codice: Seleziona tutto
#include <stdio.h>
#include <ctype.h>
#include <bcm2835.h>
int main(int argc, char **argv)
{
int i, parziale, num_giri, fine, ritardo,accel;
char verso;
if(argc!=4){
printf("sintassi errata!\ntelescopio numero_cicli lunghezza_ciclo\nnumero_cicli: numero di cicli dei 4 bit\nlunghezza_ciclo: ritardo in millisecondi tra un ciclo e l'altro\nverso\n");
return 1;
}
fine=atoi(argv[1])*4;
ritardo=atoi(argv[2]);
verso=argv[3][0];
if (!bcm2835_init()){
printf("Errore inizializzazione bcm2835\n");
return 1;
}
bcm2835_gpio_fsel(RPI_GPIO_P1_15, BCM2835_GPIO_FSEL_OUTP); //PHASE 1
bcm2835_gpio_fsel(RPI_GPIO_P1_19, BCM2835_GPIO_FSEL_OUTP); //PHASE 2
bcm2835_gpio_fsel(RPI_GPIO_P1_21, BCM2835_GPIO_FSEL_OUTP); //I01
bcm2835_gpio_fsel(RPI_GPIO_P1_22, BCM2835_GPIO_FSEL_OUTP); //I02
bcm2835_gpio_fsel(RPI_GPIO_P1_23, BCM2835_GPIO_FSEL_OUTP); //I11
bcm2835_gpio_fsel(RPI_GPIO_P1_18, BCM2835_GPIO_FSEL_OUTP); //I12
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW); //PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW); //PHASE 2
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);//I01
bcm2835_gpio_write(RPI_GPIO_P1_22, LOW);//I02
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);//I11
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);//I12
i=0;
parziale=0;
num_giri=0;
accel=0;
for( i = 0; i < fine; i++ )
{
parziale++;
switch(parziale)
{
case 1:
if(verso=='o'){
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);//PHASE 2
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);//PHASE 2
}
break;
case 2:
if(verso=='o'){
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);//PHASE 2
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);//PHASE 2
}
break;
case 3:
if(verso=='o'){
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);//PHASE 2
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);//PHASE 2
}
break;
case 4:
if(verso=='o'){
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);//PHASE 2
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);//PHASE 1
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);//PHASE 2
}
num_giri++;
printf("giri: %d, ritardo: %d usec.\n",num_giri,ritardo);
parziale=0;
break;
}
//accel++;
//if (accel==5){
// accel=0;
// if (ritardo>800){
// ritardo--;
// }
//}
usleep(ritardo);
}
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
return 0;
}
Codice: Seleziona tutto
#include <stdio.h>
#include <ctype.h>
#include <bcm2835.h>
int main(int argc, char **argv)
{
int i, parziale, num_giri, fine, ritardo;
char verso;
if(argc!=4){
printf("sintassi errata!\ntelescopio numero_cicli lunghezza_ciclo\nnumero_cicli: numero di cicli dei 4 bit\nlunghezza_ciclo: ritardo in microsecondi tra un ciclo e l'altro\nverso di rotazione (a-antiorario, o-orario)\n");
return 1;
}
fine=atoi(argv[1])*8;
ritardo=atoi(argv[2]);
verso=argv[3][0];
if (!bcm2835_init()){
printf("Errore inizializzazione bcm2835\n");
return 1;
}
bcm2835_gpio_fsel(RPI_GPIO_P1_15, BCM2835_GPIO_FSEL_OUTP); //PHASE 1
bcm2835_gpio_fsel(RPI_GPIO_P1_19, BCM2835_GPIO_FSEL_OUTP); //PHASE 2
bcm2835_gpio_fsel(RPI_GPIO_P1_21, BCM2835_GPIO_FSEL_OUTP); //I01
bcm2835_gpio_fsel(RPI_GPIO_P1_23, BCM2835_GPIO_FSEL_OUTP); //I11
bcm2835_gpio_fsel(RPI_GPIO_P1_22, BCM2835_GPIO_FSEL_OUTP); //I02
bcm2835_gpio_fsel(RPI_GPIO_P1_18, BCM2835_GPIO_FSEL_OUTP); //I12
//bcm2835_gpio_fsel(RPI_GPIO_P1_11, BCM2835_GPIO_FSEL_INPT); //Encoder
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
i=0;
parziale=0;
num_giri=0;
for( i = 0; i < fine; i++ )
{
parziale++;
switch(parziale)
{
case 1:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
break;
case 2:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
}
break;
case 3:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
break;
case 4:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
break;
case 5:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
break;
case 6:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
}
break;
case 7:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
break;
case 8:
//fasi
if (verso=='a'){
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, LOW);
}
else
{
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
}
num_giri++;
printf("giri: %d\n",num_giri);
parziale=0;
break;
}
usleep(ritardo);
}
bcm2835_gpio_write(RPI_GPIO_P1_15, LOW);
bcm2835_gpio_write(RPI_GPIO_P1_19, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_21, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_23, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_22, HIGH);
bcm2835_gpio_write(RPI_GPIO_P1_18, HIGH);
/*
while(1)
{
if(bcm2835_gpio_lev(RPI_GPIO_P1_11))
{
printf("The button has been pressed\n");
}
while(bcm2835_gpio_lev(RPI_GPIO_P1_11)){}
}
*/
return 0;
}
E pluribus unum