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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.