Arduino mega – die meistgelesenen Beiträge

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

Arduino Wert aus Tabelle?

Guten Tag,

ich habe ein kleines Problem mit meinem Arduino Code... Ich weiß leider nicht weiter.

ich habe hier schon mal angefangen ein Programm zu schreiben das mir mein Arduino Mega alle 2 sec. eine Temperatur anhand eines Ohm wertes aus gibt.

das Problem liegt jetzt aber dabei das ich den Ohm wert nicht in die Temperatur umwanden kann.

Ich habe mir eine Tabelle erstellt die angibt bei welchem Ohm wert welche Temperatur angezeigt werden soll.

Nun die Frage: Wie gleicht mir der Arduino die Gemessenen werte mit den vorhandenen ab und zeigt mir dann auf meinem OLED Display meine Temperatur an?

ich bedanke mich schon mal recht Herzlich für die antworten.

MfG Dennis

PS: falls es fragen gibt bitte melden!!

Das wäre der Bisher funktionierende Code

#include <GyverOLED.h>

GyverOLED<SSH1106_128x64> oled;

const uint8_t bitmap_32x32[] PROGMEM = {

 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0x70, 0x70, 0x30, 0x30, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x30, 0x30, 0x20, 0x00, 0x00,

 0x00, 0x30, 0x78, 0xFC, 0x7F, 0x3F, 0x0F, 0x0F, 0x1F, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x40, 0xE0, 0xF0, 0xF8, 0xFC, 0xFF, 0x7F, 0x33, 0x13, 0x1E, 0x1C, 0x1C, 0x0E, 0x07, 0x00,

 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xF7, 0xEF, 0x5F, 0x3F, 0x7F, 0xFE, 0xFD, 0xFB, 0xF1, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x33, 0x33, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x1F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00,

};

int analogPin = 0;

int raw = 0;

int Vin = 5;

float Vout = 0;

float R1 = 330000;

float R2 = 0;

float buffer = 0;

void setup() {

 Serial.begin(9600);

 oled.init();

  

 oled.clear();

 oled.setScale(1);

 oled.update();

}

void loop() {

 raw = analogRead(analogPin);

 if(raw){

  buffer = raw * Vin;

  Vout = (buffer)/1024.0;

  buffer = (Vin/Vout) - 1;

  R2= R1 * buffer;

  delay(2000);

oled.home();

 oled.print("Temp1:");

 oled.update();

 oled.setCursor(5, 2);

 oled.update();

 oled.print(R2);

 oled.update();

 }

}

Bild zum Beitrag
Arduino, arduino mega

Wie kann ich einen Takt von 50kHz mit dem Arduino Mega2560 erzeugen?

Hallo zusammen,

Wie oben schon beschrieben die Frage, wie ich einen Takt von 50kHz mit dem Arduino Mega2560 erzeugen kann.

Das ist mein derzeitiger Sketch:

const int outputPin = 5;  // digitale Ausgangspin
unsigned long startTime;   // Variable zur Speicherung des Startzeitpunkts


void setup() {
  pinMode(outputPin, OUTPUT);  // Setzen des Pin als Ausgang
  Serial.begin(9600);  // Starten der serielle Kommunikation mit 9600 Baud
}


void loop() {
  // Einschaltphase messen
  startTime = micros();  // Aktuelle Zeit speichern
  digitalWrite(outputPin, HIGH);  // Pin auf HIGH
  delayMicroseconds(10);  // Warten für die halbe Periode (T_high)
  unsigned long onTime = micros() - startTime;  // Berechnen Sie die Einschaltzeit in Mikrosekunden


  // Ausschaltphase messen
  startTime = micros();  // Aktuelle Zeit speichern
  digitalWrite(outputPin, LOW);  // Pin auf LOW 
  delayMicroseconds(10);  // Warten für die andere halbe Periode (T_low)
  unsigned long offTime = micros() - startTime;  // Berechnen der Ausschaltzeit in Mikrosekunden


  // Ausgabe der gemessenen Zeiten
  Serial.print("Einschaltzeit: ");
  Serial.print(onTime);
  Serial.print(" µs  ----  ");
  Serial.print("Ausschaltzeit: ");
  Serial.print(offTime);
  Serial.println(" µs");


  delay(1000);  // Eine Sekunde warten, bevor der nächste Zyklus beginnt
}


// Soll Periodendauer = 20µs -> f = 50kHz

Leider erhalte ich mit diesem Code folgende Ausgabe:

Einschaltzeit: 20 µs  ----  Ausschaltzeit: 16 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 20 µs  ----  Ausschaltzeit: 16 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 20 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 16 µs
... usw.

Mir ist klar, das der Controller durch die Funktion Serial.print() und auch die delayMicroseconds() zeit verbraucht.

Gibt es aber eine möglichkeit möglichst genau einen Takt von 50kHz mit dem Arduino zu erzeugen?

Vielen Dank!

Computer, programmieren, Elektrik, Arduino, Physik, Sketch, arduino mega