Pic Micro, Arduino, Atmel, Microchip, Freescale, Texas Instrument, ecc. Strumenti di sviluppo, firmware e progetti.
da michelescandola
#1783
Buongiorno a tutti carissimi, sono alle prese con un problema che nella mia testa doveva essere molto semplice: costruire una pedaliera con arduino in modo da collegarla via usb al pc e poter leggere gli input semplicemente per poi utilizzarlo con svariate applicazioni PC.
Per cominciare pensavo "comincio col controllare col pedale l'accensione/spegnimento di un led".
Semplice, no?
Invece non va un pifferaio magico... Ciò che ottengo è un LED che rimane costantemente acceso e che, quando di preme il pedale, aumenta di luminosità.
Quindi penso di aver sbagliato qualcosa... allora guardo un tutorial online (https://www.arduino.cc/en/Tutorial/Button), vedo che non è molto diverso, ma lo seguo pedissequamente sostituendo al bottone il pedale. Nulla, il funzionamento non cambia...
Allora sostituisco al pedale un bottone e vedo che funziona tutto come dovrebbe, in allegato vedete lo schema.

schema switch button_bb.png
schema switch button


Allora penso che è il pedale a non funzionare come dovrebbe (nelle immagini in allegato avete anche delle foto del pedale e il suo schemino)
IMG-20160301-WA0001.jpg

IMG-20160301-WA0002.jpg


Per spiegarvi come ho collegato il pedale: il cavo bianco è a 5v,
il cavo nero a ground
il cavo rosso va al pin 2

La cosa assurda è avvenuta CONTROLLANDO il pedale, per capire come funzionava... controllando il voltaggio che passava col multimetro, mettendo il polo positivo su dove si collega il cavo rosso (quello quindi che va al pin 2) e con il polo negativo a massa... la pedaliera comincia a funzionare come dovrebbe!!!
Ma il multimetro non dovrebbe far né ponte, né null'altro...

Cosa ho sbagliato??? Cosa ignoro???

Mille grazie a chiunque voglia aiutarmi...
Avatar utente
da Bios
#1784
Prova così:
  • Collega il filo rosso a 5V
  • Il filo bianco collegalo al pin 2
  • Porta GND sul filo bianco tramite la resistenza
  • Lascia il filo nero flottante, significa non connesso

button_schem.png
#1785
Mille grazie, ora funziona!

Peraltro lo schema che mi hai mandato è proprio quello che c'è sul tutorial su arduino.cc

Quindi lo switch non funziona come credevo io, in realtà i due pin da un lato (su o giù) sono connessi fra loro?

Quindi l'idea è che finché il contatto è chiuso i 5 v non passano, mancando il collegamento (resistenza infinita), mentre il pin 2 è collegato a massa, quindi, in arduinese, è LOW. Una volta premuto il pedale i 5 v passano dal pin 2 non trovando la resistenza (perché a GND questa c'è) e quindi pin 2 va ad HIGH... right?

Mille grazie bios!
Avatar utente
da Bios
#1790
Non proprio. Devi ragionare così: si dice che il pin 2 è sempre polarizzato verso massa in modo che a pedale aperto arduino legga un LOW. A pedale chiuso, invece, circola una corrente prevalentemente diretta al pin 2 sul quale ritroviamo 5V pieni, dunque lo stato è HIGH.
In pratica quella resistenza (di polarizzazione) messa in mezzo serve a non collegare di netto 5V e GND e quindi limitare la corrente (evitare corto circuito) a pedale abbassato.
Un chiarimento sul tuo pedale: in didascalia sono mostrati tre contatti, uno è il comune gli altri due si chiamano N.O. (normalmente aperto) e N.C. (normalmente chiuso), in pratica con la pedaliera a riposo c'è contatto tra COM e N.C., premendo invece il contatto è tra COM ed N.O.

Saluti.
#1939
Seguendo (con ritardo) la richiesta di Bios, vi aggiorno su come è andata:

Intanto l'obiettivo era quello di avere una pedaliera collegabile al PC, che mandi un carattere al pc a seconda di ciò che si è premuto.

Devo ancora ultimare il tutto, comunque, basandomi sul circuito per il pedale singolo, creerò un circuito per 6 pedali da leggere in parallelo.
Questo per intanto l'ho testato su basetta e funziona

In pratica ho collegato i sei pedali tutti a:
  • il bianco a GND tramite resistenza
  • il bianco a pin da 13 a 8
  • il rosso a 5 v

A livello di codice mi sono basato sull'uso delle porte, cosa che è sconsigliata sull'arduino ma che è anche l'unico modo per avere una vera lettura in parallelo di pin molteplici.
Il codice, molto banale, è il seguente:

Codice: Seleziona tuttoint pinb;

void setup()
{
  Serial.begin(9600);//imposto il baudrate della porta seriale a 9600
  DDRB = B11111111;//imposto PORTB ad "input"
  PORTB = 0; //azzero tutto
  DDRB = B00000000; // importo PORTB (digital 13~8) a "output"
}

void loop()
{
  pinb = (int)PINB;  //leggo l'ingresso da PORTB
  Serial.print(pinb);//invio il numero risultante via USB
}


In questo modo la pedaliera mi invia continuamente "0" finché non premo alcun pedale, poi, a seconda del pedale che premo, invia un segnale diverso. Chiaramente in questo modo la scatolina invia un sengale diverso al PC anche premendo una combinazione qualsiasi di pedali.
In pratica abbiamo 2^6 combinazioni = 64, se togliamo lo "0" che è "nulla" possiamo considerare 63 diversi input al PC per le nostre applicazioni.
Vendo

OWON HDS2202S nuovo imballo originale 190.00 eur[…]

Sono comuni interruttori a levetta DPDT. Se le due[…]

Visita il nostro canale telegram