RE: Datenübertragung Arduino Mega zu Labview
// Programmierung des Mikrocontrollers
// Thomas Biedenbach
// CarreraBike
// Mikrocontroller Arduino Mega 2560
// Um die Runden der Fahrzeuge zu zählen, bedarf es einer Abfrage am Startzielbogen
// um dem Mikrocontroller mitzuteilen ob das Fahrzeuge durchgefahren ist oder nicht.
// Die Kontrolle, ob ein Fahrzeug durch den Startzielbogen gefahren ist , geschieht durch
// eine selbst gebaute Infrarot - Lichtschranke, die am Bogen unten angebracht ist.
// Ist die Lichtschranke belegt, dann sendet sie eine 1 an den Mikrokontroller, sobald sich
// nicht belegt ist sendet sie eine 0. Durch einen Reset Taster werden die Runden wieder auf zurückgesetzt
#include "SevSeg.h" //4 stellige 7 Segemnt Library hinzufügen
SevSeg sevseg;
int Lichtschranke1 = 11; // Zuweisung für Lichtschranke Bahn1 = Pin 11
int Lichtschranke2 = 13; // Zuweisung für Lichtschranke Bahn2 = Pin 13
int Lichtschrankeunterbrochen1; // Variable für Pin Zustand Bahn 1
int Lichtschrankeunterbrochen2; // Variable für Pin Zustand Bahn 2
int letzteRunde1; // Variable für den letzten Schalterzustand letzte Runde Bahn1
int letzteRunde2; // Variable für den letzten Schalterzustand letzte Runde Bahn2
int Runde1 = 0; // Varialbe für Rundeanzahl Bahn 1, am Anfang Runde = 0
int Runde2 = 0; // Varialbe für Rundeanzahl Bahn 2, am Anfang Runde = 0
int reset = 12; // Zuweisung für Resettaster = Pin 11
int resetdruecken; // Variable für Pin Zustand Resettaster
int auszugebende_Zahl; // Variable für auszugebende Zahl, am Display
void setup(){ //Setup Bedingungen des Programms
Serial.begin(9600); // Start der seriellen Kommunikation mit 9600bps
pinMode(Lichtschranke1,INPUT); // setzt den DigitalPin als Eingang
pinMode(Lichtschranke2,INPUT); // setzt den DigitalPin als Eingang
letzteRunde1 = digitalRead(Lichtschranke1); // Anfangszustand auslesen
letzteRunde2 = digitalRead(Lichtschranke2); // Anfangszustand auslesen
resetdruecken =digitalRead(reset); // Anfangszustand auslesen
sevseg.Begin(1,2,5,6,32,3,7,28,24,22,4,30,26); // Pin Belegung des Mikroconrollers für 4 stellige 7 Segement Display
sevseg.Brightness(10); // Helligkeit des Displays Wert von 0-100
}
void loop() { // Bedingungen die ständig wiederholt werden
sevseg.PrintOutput(); // Erzeugt die Ausgabe am Display
if (digitalRead(reset) == HIGH) // Wenn Reset 1, Dann Runde1 = 0, Runde wird zurückgesetzt
Runde1 = 0;
Lichtschrankeunterbrochen1 = digitalRead(Lichtschranke1); // Lichtschranke1 Wert lesen und in Varibale Lichtschrankeunterbrochen1 speichern
if (Lichtschrankeunterbrochen1 != letzteRunde1) { // Der Zustand des Schalters hat sich verändert
if (Lichtschrankeunterbrochen1 == LOW) { // Wenn Lichtschranke unterbrochen dann
Runde1++; // Runde1 hochzählen +1
if (Runde1==99) { // Wenn Runde 99 erreicht, dann zurücksetzen auf 0
Runde1=0;}
Serial.print("Wir sind jetzt in der "); // Ausgaben zum Serial Monitor, nur sichtbar am PC
Serial.print(Runde1);
Serial.println(" Runde Bahn1");
}
}
letzteRunde1 = Lichtschrankeunterbrochen1; // Den letzten Schalterzustand merken
if (digitalRead(reset) == HIGH) // Wenn Reset 1, Dann Runde2 = 0, Runde wird zurückgesetzt
Runde2 = 0;
Lichtschrankeunterbrochen2 = digitalRead(Lichtschranke2); // Lichtschranke2 Wert lesen und in Varibale Lichtschrankeunterbrochen2 speichern
if (Lichtschrankeunterbrochen2 != letzteRunde2) { // Der Zustand des Schalters hat sich verändert
if (Lichtschrankeunterbrochen2 == HIGH) { // Wenn Lichtschranke unterbrochen
Runde2++; // Runde2 hochzählen +1
if (Runde2==99) { // Wenn Runde 99 erreicht, dann zurücksetzen auf 0
Runde2=0;}
Serial.print("Wir sind jetzt in der "); // Ausgaben zum Serial Monitor, nur sichtbar am PC
Serial.print(Runde2);
Serial.println(" Runde Bahn2");
}
letzteRunde2 = Lichtschrankeunterbrochen2; // Den letzten Schalterzustand merken
}
auszugebende_Zahl = Runde1 * 100 + Runde2; // Formel umd Runden am Display anzuzeigen
sevseg.NewNum(auszugebende_Zahl,(byte) 2); // Ausgabe zum 4 stelligen 7 Segmentanzeige
}
|