7 Segment anzeige Aktualisierrate ändern Arduino?

Hallo, ich baue ein Voltmeter mit esc steuerung und als anzeige verwende ich ein 7 Segment Display. Mein Problem ist, dass sich das Display zu schnell aktualisiert, so dass die Zahlen nicht lesbar sind.

Ich möchte das sich die Spannung jede sekunde aktualisiert und das display das ohne flackern anzeigt.

Vielen Dank im Vorraus!!

#include "SevSeg.h" ;
int sum = 0;          
unsigned char sample_count = 0; 
float voltage = 0.0;       
#include <Servo.h>
#define PIN_MOTOR 13
#define PIN_POTI A2
#define NUM_SAMPLES 10
SevSeg sevseg; 
Servo servo;
unsigned long startTime, delayTime = 1000; 
int val = 0;
void setup() 
{
  
  startTime = micros();
  servo.attach(PIN_MOTOR);
  servo.write(25); 
  delay(2000);
   
byte numDigits = 4; 
byte digitPins[] = {2, 3, 4, 5}; 
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 1}; 
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins); 
}
void loop() 
{
sevseg.setNumber(voltage * 1132,2);
sevseg.refreshDisplay();
sevseg.setBrightness(90); 
while (sample_count < NUM_SAMPLES) {
    sum += analogRead(A0);
    sample_count++;
     
    
     
  }
   
  voltage = ((float)sum / (float)NUM_SAMPLES * 5.015) / 1024.0;
   
  Serial.print(voltage * 11.132);
  Serial.println (" V");
  sample_count = 0;
  sum = 0;
   
   
  if ((millis() - startTime) >= delayTime){
    val = map(analogRead(PIN_POTI), 0, 676, 30, 110);
    servo.write(val);
    Serial.println(val);
    startTime = micros();
  }  }

https://www.youtube.com/watch?v=1zuE3fo1_lQ

Technik, Arduino
Tasterstatus HIGH schalten ?

Hallo Leute bei dem unten Angegebenen Sketch sieht man das wen count richtig ist und der Taster gedrückt ist die LEDS in Reihenfolge blinken sollen.

Ich möchte das die LEDS nicht mehr aufhören zu blinken was muss ich da noch ergänzen?

int taster1=7;
int taster2=8;


int tasterstatus2=0;


int led1=12;
int led2=11;
int led3=10;
int led4=9;







bool oldButtonState = HIGH;
bool newButtonState;
int count = 0;


void setup() {
 pinMode (taster1,INPUT);
pinMode (taster2,INPUT);




pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);





}


void loop() {
  newButtonState = digitalRead(taster1);
  
  tasterstatus2 = digitalRead(taster2);
  
  if (oldButtonState == HIGH && newButtonState == LOW) {
    count++;
    oldButtonState = newButtonState;


    if (count == 1) {
      digitalWrite(led1, HIGH);
    }
    if (count == 2) {
      digitalWrite(led1, LOW);
      digitalWrite (led2,HIGH);
    }


    if (count == 3 ){
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
    }


    if (count == 4){
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
    }


    if (count == 5){
      digitalWrite (led4,LOW);
      count = 0;
    }


if ((tasterstatus2 == HIGH) && (count == 1)){
  
  
  digitalWrite (led1,HIGH);
  digitalWrite (led2,LOW);
  digitalWrite (led3,LOW);
  digitalWrite (led4,LOW);
  delay (1000);


  digitalWrite (led1,LOW);
  digitalWrite (led2,HIGH);
  delay (1000);
  digitalWrite (led2,LOW);
  digitalWrite (led3,HIGH);
  delay (1000);
  digitalWrite (led3,LOW);
  digitalWrite (led4,HIGH);
  delay (1000);
  digitalWrite (led4,LOW);
}








    if ((tasterstatus2 == HIGH ) &&( count == 2)){


      digitalWrite (led1,LOW);
      digitalWrite (led2,HIGH);
      digitalWrite (led3,LOW);
      digitalWrite (led4,LOW);
      delay (1000);
      digitalWrite (led3,HIGH);
      digitalWrite (led2,LOW);
      delay (1000);
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
      delay (1000);
      digitalWrite (led4,LOW);
      digitalWrite (led1,HIGH);
      delay (1000);
      digitalWrite (led1,LOW);
      
    }




    if ((tasterstatus2 == HIGH) && (count == 3)){


digitalWrite (led1,LOW);
digitalWrite (led2,LOW);
digitalWrite (led3,HIGH);
digitalWrite (led4,LOW);
delay (1000);


digitalWrite (led3,LOW);
digitalWrite (led4,HIGH);
delay (1000);


digitalWrite (led4,LOW);
digitalWrite (led1,HIGH);
delay (1000);


digitalWrite (led1,LOW);
digitalWrite(led2,HIGH);
delay (1000);


digitalWrite (led2,LOW);
delay (1000);
}


if ((tasterstatus2 == HIGH) && (count == 4)){


  digitalWrite (led1,LOW);
  digitalWrite (led2,LOW);
  digitalWrite (led3,LOW);
  digitalWrite (led4,HIGH);
  delay (1000);


  digitalWrite (led4,LOW);
  digitalWrite (led1,HIGH);
  delay (1000);


  digitalWrite (led1,LOW);
  digitalWrite (led2,HIGH);
  delay (1000);


  digitalWrite (led2,LOW);
  digitalWrite (led3,HIGH);
  delay (1000);


  digitalWrite (led3,LOW);
  
}
    
        
 
Technik, Arduino, schalten, Arduino Uno
Arduino if Bedinung mit 2 Werten ?

ich schreibe gerade einen Sketch das man mit einem Taster 4 LEDS weiterschalten

und wen der 2 Taster gedrückt wird blinken die anderen LEDS .

aber bei der if Bedingung bei der beide werte überprüft werden funktioniert es nicht

Weiß da jemand weiter

Das ist der Sketch:

int taster1=7;
int taster2=8;


int tasterstatus1=0;
int tasterstatus2=0;


int led1=12;
int led2=11;
int led3=10;
int led4=9;


bool oldButtonState = HIGH;
bool newButtonState;
int count = 0;


void setup() {
 pinMode (taster1,INPUT);
pinMode (taster2,INPUT_PULLUP);




pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
}


void loop() {
  newButtonState = digitalRead(taster1);
  
  tasterstatus2 = digitalRead(taster2);
  
  if (oldButtonState == HIGH && newButtonState == LOW) {
    count++;
    oldButtonState = newButtonState;


    if (count == 3) {
      digitalWrite(led1, HIGH);
    }
    if (count == 4) {
      digitalWrite(led1, LOW);
      digitalWrite (led2,HIGH);
    }


    if (count == 5 ){
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
    }


    if (count == 6){
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
    }


    if (count == 7){
      digitalWrite (led4,LOW);
    }




    


    if ((tasterstatus2 == HIGH && count == 3)){
      digitalWrite (led1,HIGH);
      delay (1000);
      digitalWrite (led1,LOW);
      digitalWrite (led2,HIGH);
      delay (1000);
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
      delay (1000);
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
      delay (1000);
      digitalWrite (led4,LOW);
    }




    if ((tasterstatus2 == HIGH) && (count == 4)){
      digitalWrite (led2,HIGH);
      delay (1000);
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
      delay (1000);
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
      delay (1000);
      digitalWrite (led4,LOW);
      digitalWrite (led1,HIGH);
      delay (1000);
      digitalWrite (led1,LOW);
    }
    
        
    delay(100);
  } else if (oldButtonState == LOW && newButtonState == HIGH) {
    oldButtonState = newButtonState;
  }
}
Computer, Programm, Arduino
Arduino LED "gleichmäßiger" pulsieren lassen?

Bei dem einfachen Sketch für eine pulsierende LED ist es immer so, dass die helligkeit am Anfang sehr schnell ansteigt, dann immer langsamer, sodass es aussieht als würde sich die helligkeit fast gar nicht verändern? Hat jemand eine idee wie man das lösen könnte?

Meine idee wäre gewesen, die zählervariable in der Schleife, die die helligkeit angibt und immer mit 1 addiert wird, jedes mal zu quadrieren, oder eben hoch *irgendeine andere zahl*, sodass die helligkeit nach oben hin immer schneller ansteigt, aber es so aussieht als würde sie gleichmäßig ansteigen.

Das funktioniert aber irgendwie nicht. Wenn ich die variable in int speichere und z.b. hoch 2 rechne, geht es, das ist aber zu schnell. Mit dezimalzahlen gibt es immer eine fehlermeldung.

Wenn ich die Variable in int speichere:

Test:27:26: error: invalid operands of types 'int' and 'double' to binary 'operator^'
   helligkeit = helligkeit^1.5;
                ~~~~~~~~~~^~~~
exit status 1
invalid operands of types 'int' and 'double' to binary 'operator^'

Das könnte wegen den 1,5 sein. Aber wenn ich die Variable in double speichere:

Test:27:26: error: invalid operands of types 'double' and 'double' to binary 'operator^'
   helligkeit = helligkeit^1.5;
                ~~~~~~~~~~^~~~
exit status 1
invalid operands of types 'double' and 'double' to binary 'operator^'

Es ändert sich nichts. Wo liegt hier der Fehler?

FROHE WEIHNACHTEN!!!
Computer, Technik, Elektronik, programmieren, Elektrotechnik, Mikrocontroller, Arduino, LED, Technologie
Kann mir das jemand erklären?

Arduino-Code und Erläuterungen für den Zähneputz-Timer

[code]

const int ledPins[ ] = {7, 8, 9, 10, 11, 12};

const int buttonPin = 2;

long myTimer = -200000;

void setup( ) {

 for (int i = 0; i < 6; i++) {

  pinMode(ledPins[ i ], OUTPUT);

 }

 pinMode(buttonPin, INPUT_PULLUP);

 Serial.begin(9600);

 for (int i = 0; i < 6; i++) {

  digitalWrite(ledPins[ i ], LOW);

 }

}

void loop( ) {

 if (digitalRead(buttonPin) == LOW) {

  myTimer = millis( );

 }

 if (millis( ) - myTimer < ( 30000) ) { // 30 Sekunden

  digitalWrite(ledPins[ 0 ], ((millis( ) - myTimer) % 1000) > 500);

 } else if (millis( ) - myTimer < ( 60000) ) { // 60 Sekunden

  digitalWrite(ledPins[ 1 ], ((millis( ) - myTimer) % 1000) > 500);

 } else if (millis( ) - myTimer < ( 90000) ) { // 90 Sekunden

  digitalWrite(ledPins[ 2 ], ((millis( ) - myTimer) % 1000) > 500);

 } else if (millis( ) - myTimer < ( 120000) ) { // 120 Sekunden

  digitalWrite(ledPins[ 3 ], ((millis( ) - myTimer) % 1000) > 500);

 } else if (millis( ) - myTimer < ( 150000) ) { // 150 Sekunden

  digitalWrite(ledPins[ 4 ], ((millis( ) - myTimer) % 1000) > 500);

 } else if (millis( ) - myTimer < ( 180000) ) { // 180 Sekunden

  digitalWrite(ledPins[ 5 ], ( (millis( ) - myTimer) % 1000) > 500);

 } else if (millis( ) - myTimer < ( 190000) ) { // nach 180 Sekunden

  for (int i = 0; i < 6; i++) {

   digitalWrite(ledPins[ i ], ( (millis( ) - myTimer) % 1000) < 500);

  }

 } else {

  for (int i = 0; i < 6; i++) {

   digitalWrite(ledPins[ i ], LOW);

  }

 }

 delay( 10 );

}

[/code]

Schule, Arduino
Arduino programmieren?

Kennt sich jemand hier aus um das zu programmieren

First Shield:

Es sollen die Taster S1 und S2 mittels Flankenerkennung eingelesen werden.

Es soll bei beiden Tastern die negative Flanke erkannt werden.

Die Flankenerkennung soll selbst programmiert werden.

Zusätzlich sollen die beiden Taster mittels geeigneter Software entprellt werden.

Funktion S1:

S1 schaltet die Zählrichtung um.

Die Zählrichtung wechselt bei jedem Drücken des Tasters zwischen Aufwärtszählung und

Abwärtszählung.

S2 wird als Zähleingang verwendet. Jeder Tastendruck wird gezählt und in einer Variablen

abgespeichert.

Diese Zählvariable wird "usi_zaehler" benannt und ist vom Datentyp unsigned short integer.

Diese Variable soll nur Werte zwischen 0 und 9 annehmen.

Hat die Variable eine der beiden Grenzen erreicht, so bleibt sie auf dem jeweiligen Wert stehen,

bis wieder ein Richtungswechsel durchgeführt wird.

7-Segment-Anzeige:

Die Zählvariable soll auf dem "DIGIT1" dargestellt werden.

Zusatz-Aufgabe für interessierte Schüler:

Entsprechend dem Wert der Zählvariable "usi_zaehler" von 0 bis 9 soll die RGB-Led von

0% bis 100% angesteuert werden und damit die Helligkeit entsprechend der 7-Segment-Anzeige

angesteuert werden.

Bei jedem Zählrichtungswechsel soll die Farbe der RGB-Led wechseln.

Die Reihenfolge der Farbwechsel lautet:

Rot-Grün-Blau-Alle drei Farben gleichzeitig-Rot-Grün-Blau-Alle drei Farben gleichzeitig - usw.

Computer, Technik, programmieren, Arduino, Technologie
Welcher Sensor für Arduino Uno misst G-Kräfte?

Guten Abend Zusammen,

Im Rahmen eines Abschlussprojektes bin ich gerade dabei, die Karosserie eines ferngesteuerten Autos zu verbessern. Verbessern bedeutet, dass der Spoiler sich den Fahrbedingungen anpassen soll. Wenn man bremst, soll sich dieser z.B aufstellen. Wenn man Beschleunigt oder steht, soll der Spoiler wieder in die Ursprüngliche Position wechseln. Wie das alles Funktionieren soll steht fest, es fehlt wirklich nur noch dieser Sensor. Alles andere ist schon ready To go.

Mir ist natürlich klar, dass das bei einem Spielzeugauto nicht viel ausmacht, darum geht es auch nicht. Meine Frage ist, ob Ihr eventuell Sensoren kennt, welche diese Kräfte messen können. Diese Sensoren müssen mit dem Arduino uno kompatibel sein.

Zuerst habe ich mir den Sensor mit der Bezeichnung "GY-61" zugelegt, welcher sich aber als ungeeignet herausstellt, da dieser lediglich Veränderungen seiner Lage messen kann. Da der Sensor am Ende statisch verbaut werden soll und ich einen richtigen Gyrosensor brauche und keinen Winkelmesser, fällt dieser leider raus.

Meine Frage an Euch: Kennt Ihr eventuell Sensoren, welche mir bei der Lösung helfen könnten? Ich habe bereits einen weiteren Sensor mit der Bezeichnung "MPU-6050" gefunden, welcher passen könnte. Jedoch wollte ich mich zuerst ein ein Paar erfahrene Nutzer wenden bevor ich wieder einen Sensor kaufe, rumprobiere und dieser am Ende wieder nicht funktioniert. Leider stehe ich auch unter Zeitdruck, da das Projekt bis Ende November fertig sein muss.

Ich freue mich sehr auf Euren Ideen, Erfahrungen und Tipps! :)

Mikrocontroller, Arduino, Sensoren, G-Kräfte, g-kraft, Arduino Uno
Serielle Kommunikation zwischen ESP32 und Raspberry Pi mit Java?

Hey liebes Forum,

Ich habe einen ESP32 der durchgehend mit einer Baud Rate von 115200 jede 500 Millisekunden eine Nachricht mit Serial.println("Test") schickt. (Das geht!)

Auf meinem Raspberry Pi läuft das Ubuntu Server Betriebssystem LTS und es ist Java JDK17 (LTS) installiert. Ich kann also ganz normal Java Programme hier laufen lassen.

Der ESP32 ist mit dem Raspberry Pi über die Serielle Schnittstelle verbunden also über GPIO14/GPIO15 und Ground. Nicht über USB sondern über RX/TX/Ground. (Ja ich habe RX TX Ground richtig angeschlossen: RX geht auf TX, TX geht auf RX), Beide Grounds von den 2 Geräten sind miteinander verbunden.

Jetzt würde ich gerne am Raspberry Pi ein Java Programm laufen lassen, dass durchgehend auf die Serielle Schnittstelle hört und diese "Test" Nachrichten, die vom ESP32 losgeschickt werden, empfängt. Die Test Nachrichten sollen also am Raspberry Pi ausgegeben werden bzw. im Java Programm gespeichert werden. Ich will nämlich in Zukunft nicht nur Test verschicken sondern richtige Daten und die dann am Raspberry Pi mit Java weiterverarbeiten.

Ich habe lange im Internet nach einer Lösung gesucht, aber nichts gefunden. Nur Lösungen mit Python scripts. Ich würde aber gerne Java verwenden. Ich bin auch schon auf pij4 gestoßen, das klappt aber auch nicht. Da gibts Library Error wie zum Beispiel: java.lang.UnsatisfiedLinkError: oder wrong ELF class: ELFCLASS32 (Possible cause: can't load ARM .so on a AARCH64 platform)

Welche Library eignet sich am besten bzw. muss ich noch was anderes am Raspberry Pi konfigurieren, damit das ganze geht.

Allgemein: Wie kann ich am Raspberry Pi mit Java, die Daten, die vom ESP32 weggeschickt wurden über die Serielle Schnittstelle empfangen?

Bild zum Beitrag
Computer, Technik, Elektronik, Java, Mikrocontroller, Arduino, Technologie, Serielle Schnittstelle, Raspberry Pi, ESP32
Objekterkennung mit Arduino Kamera?

Hallo,

Ich möchte für ein Schulprojekt das bekannte Spiel Bierpong optimieren, mittels Sensoren, LED's und einem Arduino.

Bei Bierpong gibt es Regeln und eine sehr wichtige Regel ist, dass dein Ellenbogen beim Wurf des Tischtennisballs nicht hinter der Tischkante sein darf. Dies möchte ich mittels einer Kamera überprüfen.

Ich habe schon sehr viel zeit investiert, um zu recherchieren, wie die realisierbar ist und landete bei allem in einer Sackgasse. Das größte Problem ist nämlich, dass der Sensor oder die Kamera erst reagieren soll, wenn der Ellenbogen hinter der Kante ist und nicht schon bei der Hand oder beim Arm (der darf ja über der Kante sein). Deshalb ist mir die Idee gekommen ein Armband um den Ellenbogen zu tragen und die Sonsoren / Kamera so einzustellen, dass diese nur auf das Armband reagieren. Mit Sensoren ist dies aber meines Wissens nach nicht möglich, da es keinen Sensor gibt der auf ein bestimmtes Material reagiert ader Farben über weite Distanz erkennt, also sind für mich Sensoren aus dem Spiel.

Mit einer Kamera sollte es aber gehen und an dem arbeite ich gerade auch.

Nun deshalb meine Frage: Wie würdet ihr so einen "Ellenbogen Prüfer" realisieren und falls ihr auch zu dem entschluss mit der Kamera kommt welche Kamera würdet ihr nehmen / könnt ihr empfehlen, die folgende Kriterien erfüllt:

-Die Kamera sollte mehr als 5 fps liefern, da der Wurf recht schnell ausgeführt wird und mit nur einem bild pro Sekunde die Kamera den Wurf meist garnicht mitbekommt

-Die Kamera sollte Objekte z.B. ein rotes Armband auf 0,5 - 1m gut erkennen

-Die Kamera soll direkt mit dem Arduino verbunden sein, keine IP oder Bluetooth Kamera.

-Die Kamera soll falls möglich leicht zu bedienen sein d.h. wenn es eine fertige Arduino Library für die Kamera gibt wäre dies toll.

-Die Kamera sollte nicht mehr als 25 Euro kosten ALSO EINE PIXY oder PIXY2 IST ZU TEUER.

Außerdem möchte ich wirklich gerne einen Arduino verwenden, also kommt ein Rapberry Pi nur dann in Frage wenn es wirklich garnicht anders geht.

Ich bedanke mich schonmal im Voraus und bin gespannt was ihr für lösungen habt.

Computer, Kamera, Technik, Arduino, Sensoren, Technologie, arduino mega

Meistgelesene Fragen zum Thema Arduino