• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino nano i enkoder wyjście analogowe ?
#1
Witam mam takie pytanie czy z arduino nano i pierwszego lepszego enkodera można zrobić przyciski do przewijania piosenek ?

Chodzi o to że w samochodzie w pilocie jest rolka do zmiany piosenki na następną/poprzednią  nowe radio ma wejście analogowe , potrzebował bym układ który po ruchu enkoder wystawi na odpowiedni pin sygnał  czy takie coś da rade zaprogramować z arduino nano i enkoder ?
 
Odpowiedź
#2
Tak, da radę.
 
Odpowiedź
#3
Dziękuje , zamawiam elementy. Mam nadzieje że mogę liczyć na pomoc w programowaniu i podłączeniu jak tylko dojdzie Smile
 
Odpowiedź
#4
Panowie i Panie . W czasie oczekiwania na elementy przeglądam ten enkoder EC11
https://abc-rc.pl/product-pol-7636-Modul...koder.html
do enkodera jest schemat razem z programem

//these pins can not be changed 2/3 are special pins
int encoderPin1 = 2;
int encoderPin2 = 3;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;

int lastMSB = 0;
int lastLSB = 0;

void setup() {
Serial.begin (9600);

pinMode(encoderPin1, INPUT);
pinMode(encoderPin2, INPUT);

digitalWrite(encoderPin1, HIGH); //turn pullup resistor on
digitalWrite(encoderPin2, HIGH); //turn pullup resistor on

//call updateEncoder() when any high/low changed seen
//on interrupt 0 (pin 2), or interrupt 1 (pin 3)
attachInterrupt(0, updateEncoder, CHANGE);
attachInterrupt(1, updateEncoder, CHANGE);

}

void loop(){
//Do stuff here

Serial.println(encoderValue);
delay(1000); //just here to slow down the output, and show it will work even during a delay
}

void updateEncoder(){
int MSB = digitalRead(encoderPin1); //MSB = most significant bit
int LSB = digitalRead(encoderPin2); //LSB = least significant bit

int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number int sum = (lastEncoded << 2) | encoded; //adding it to the previous encoded value if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++; if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --; lastEncoded = encoded; //store this value for next time }

pytania jakie mi się pojawiły
enkoder podłączamy do pinu 2i 3 oraz GND w schemacie nie ma podłączenia przez rezystory, czy takie są tu wymagane.
Piny 2i 3 są wejściami a na których pinach jest wyjście sygnału .
Czy muszę je sam zdefiniować ?
Czy to jest kompletny kod ?
 
Odpowiedź
#5
Zacznij od kursu Arduino. Encodery mogą być gołe (jak w linku) i podstawową elektroniką eliminującą drgania. W zależności co masz kod może się różnić. To co załączyłeś to podstawowy kod pozwalający uruchomić encoder bez eliminacji drgań styków. Po instalacji Arduino możesz też wybrać gotową bibliotekę do encodera i do każdej znajdziesz przykłady jej użycia.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości