Arduino Due Poti Auslesen

OP #6637425
Lesenswert?

Hallo,

Ich habe ein 10k Poti an den A2 Anschluss beim Arduino DUE angeklemmt 
und lese den Wert aus. Durch ein mapping gibt er mir den Wert von 0 bis 
100 aus, den ich mir auch auf einem I2C Display anzeigen lasse.

Leider habe ich keinen hohen IQ in C++ Programmierung wenn die mit 
vielen Bedingungen einhergehen muss.

Und zwar läuft der Arduino DUE als HID Keyboard. Ich suche eine Code 
Hilfe bei dem wenn ich den Poti Wert erhöhe alle 5 Werte einmal einen 
Keyboard.press / Keyboard.release auslöst z.b. "A" bis er den wert 100 
erreicht hat. Also bei 5, bei 10, bei 15, bei 20 etc....

und natürlich auch beim zurückdrehen des Potis. Das der Arduino dann 
z.B. einmal ein "B" auslöst. von 100 zurück bei 95, 90, 85 etc.....

Könnte dies zwar mit einem Encoder relativ einfach machen würde aber 
gerne ein Poti nehmen damit die Haptik stufenlos ist.

Hier mein Anfangscode zum Auslesen des Poti Wertes:
------------------------------------------------------------
1
#include <Wire.h>
2
#include <LiquidCrystal_I2C.h>
3
#include <Keyboard.h>
4
#include <HID.h>
5

6
LiquidCrystal_I2C lcd(0x27,16,2);
7

8

9
int pot1 = A2; 
10
int pot1_wert = 0; 
11
 void setup() {
12
  
13
   Serial.begin(9600); 
14
   lcd.init();              
15
   lcd.setCursor(0,0);
16
   lcd.print("#    Volume    #");
17
   lcd.backlight();
18
   Keyboard.begin();
19

20
 }
21

22
 void loop() {
23
   pot1_wert = analogRead(pot1); 
24
   pot1_wert = map(pot1_wert, 0, 1023, 0, 100); 
25
   lcd.setCursor(7, 1);
26
   lcd.print(pot1_wert);
27
   delay(300);
28
   lcd.setCursor(0, 1);
29
   lcd.print("                ");
30
   Serial.print("P1 = "); 
31
   Serial.println(pot1_wert); 
32
   delay(100);
-----------------------------------------------------

Das Poti soll bei einer Software die mit Tastendruck funktioniert die 
Lautstärke erhöhen bzw. verringern. 20 Tasten Anschläge Max /Min Volume.

Vielen Dank der mir dabei helfen könnte.
Gast #6637659
Lesenswert?

1
#include <Wire.h>
2

3
#include <LiquidCrystal_I2C.h>
4

5
#include <Keyboard.h>
6

7
#include <HID.h>
8

9
LiquidCrystal_I2C lcd(0x27,16,2);
10

11
int pot1 = A2; 
12

13
int pot1_wert = 0;
14
int oldpot1_wert = 0; 
15

16
 void setup() {
17

18
  
19

20
   Serial.begin(9600); 
21

22
   lcd.init();              
23

24
   lcd.setCursor(0,0);
25

26
   lcd.print("#    Volume    #");
27

28
   lcd.backlight();
29

30
   Keyboard.begin();
31

32
 }
33

34
 void loop() {
35

36
   pot1_wert = analogRead(pot1); 
37

38
   pot1_wert = map(pot1_wert, 0, 1023, 0, 20); 
39

40
   lcd.setCursor(7, 1);
41

42
   lcd.print(pot1_wert);
43

44
   delay(300);
45

46
   lcd.setCursor(0, 1);
47

48
   lcd.print("                ");
49

50
   Serial.print("P1 = "); 
51
   if (pot1_wert > oldpot1_wert {
52
     Serial.print("A");
53
   }
54
   if (pot1_wert < oldpot1_wert {
55
     Serial.print("B ");
56
   }
57
   oldpot1_wert = pot1_wert;
58
   Serial.println(pot1_wert); 
59

60
   delay(100);
61
 }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren