2 funktionierende Sketche in einem - Bitte um Hilfestellung für Anfänger
Guten Abend liebe Community,
ich bin schon des längeren hier angemeldet und habe nur im stillen mitgelesen!
Ich bin an einem Roboter Projekt tätig, der auch schon fast fertig ist,
das Projekt möchte ich hier auch noch ausführlich vorstellen!
Kurz zu mir: Bin 25 Jahre alt, gelernter CAD Konstrukteur und arbeite auch als dies im Familienbetrieb.
Daher die Technische Seite zur Durchführung kein problem, Elektronik Kenntnisse auch vorhanden.
Momentan wird der Roboter über eine herkömmliche Modellbaufernsteuerung ( Spektrum DX6i ) gesteuert,
diese spricht den Fahrtenregler an ( SGS Elektronisch TVC-B-30 ) und der wiederum 2 Elektromotoren.
Also Prinzip Panzersteuerung mit zwei unabhängig angetrieben Hinterräder und vorn zwei Lenkrollen.
( Habe 6 Jahre Modellbau betrieben daher war dies ein Kinderspiel )
Ich möchte aber den Roboter nicht über die Funkte steuern sondern später mal über den Arduino und die passende
selbstgeschriebene Software!. Aber erstmal Schritt für Schritt.
Nun aber zu meinem Problem:
Ich habe mir ein Arduino Starterkit besorgt ( Amazon ) bin auch hoch zufrieden.
Habe die letzten 3 Wochen mit verbracht, die Schaltungen nachzubauen, nach zu stecken auf dem Steckbrett und zu
verstehen und die Abläufe des Sketches zu verinnerlichen.
Habe mir auch ein Buch ( Die elektronische Welt mit Arduino entdecken - Amazon und ebenfalls hoch zufrieden ) gekauft und
auf Youtube diverse Tutorials nachgebaut und verstanden, also:
ich bekomme kleine LED Schaltungen hin oder Schaltungen die sonstige aufgaben erledigen ( Temperatursensor od Lichtsensor )
Jetzt möchte ich gerne zwei Schaltungen vereinen und in ein Sketch verbinden.
Habe hier schon im Forum gelesenen, das das nicht so einfach ist bzw für mich zumindest nicht :(
Habe auch den Rot befolgt und wie es in dem Beitrag geheißen hat, ein neues Programm zu schreiben.
Jetzt taucht aber folgender Fehler auf wo ich Hilfestellung benötige um es zu verstehen!
In den Sketch für die Netzwerkkamera ein und auszuschalten kommt die Operation : ledState = LOW; vor und
in dem zweiten Sketch bzw Operation kommt vor: low = lightLevel;
Jetzt bringt mir Arduino ein Fehler das er den Wert LOW ( und auch HIGH ) nicht zuordnen kann weil er zweimal in dem Sketch vorkommt.
Das leuchtet mir auch ein, aber den Lösungsweg also wie ich ihm sagen kann ledState = LOW gehört zur ersten Operation,
und low - lightlevel zu der anderen Operation!
Beide Programme laufen unabhängig voneinander auf dem Steckbrett und im Arduino.
Aber ich möchte ja das der Arduino mehrere Aufgaben erledigt, ich will ja nicht für jedes Programm ein eigenen Ardino :p:p:p:p:p
das währe auch eine Lösung, kann aber nicht der Weg sein :)
Ich hoffe mir kann jemand ein Tip geben, das ich es verstehe .... Versuche es schon 3 Tage zu lösen!
Mfg Benny
Hier noch mein geschriebener Code:
Code:
// Netzwerkkamera
const int switchPin = 2;
const int camPin = 3;
// LED SENSOR
const int sensorPin = 0;
const int ledPin = 4;
int state; // Variable für Operation1 = Netzwerkkammera Ein / Aus
int lastState; // Variable für Operation1 = Netzwerkkammera Ein / Aus
int ledState; // Variable für Operation1 = Netzwerkkammera Ein / Aus
int lightLevel, high = 0, Low = 1023; // Variable für Operation2 = LED Sensor
void setup()
{
pinMode(camPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
Serial.begin(9600);
}
void Operation1() // Netzwerkkamera Ein / Aus
{
state = digitalRead(switchPin);
if (state != lastState)
{
if (state == HIGH)
{
if (ledState == HIGH)
{
ledState = LOW;
Serial.println("LED AUS");
}
else
{
ledState = HIGH;
Serial.println("LED EIN");
}
}
lastState = state;
}
digitalWrite(ledPin, ledState);
delay(20);
}
// ----------------------------------------
void Operation2() // LED SENSOR
{
lightLevel = analogRead(sensorPin);
analogWrite(ledPin, lightLevel);
if (lightLevel < Low)
{
low = lightLevel;
}
if (lightLevel > High)
{
high = lightLevel;
}
lightLevel = map(lightLevel, Low+30, high-30, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
void loop()
{
Operation1(); // Netzwerkkamera ein und aus schalten
Operation2(); // Sensor steuert LED
}
Liste der Anhänge anzeigen (Anzahl: 4)
Okay soweit habe ich verstanden und werde es gleich ausprobieren, ob es funktioniert, der Tipp war wenigstens verständlich =)
Das ihr wisst um was es geht, kurz paar Bilder, wollt eigentlich noch nichts verraten aber für die schnelle Hilfe =)
Name: Roboter RSL7
Gewicht: 120 KG ( Gesamt)
Aufgaben( Rasenmäher, Schneeschieben, Straße kehren mit hinterhergezogener Kärger Handkermaschine ( S550))
Leistung Motoren: 1500 Watt (750 pro Motor )
Akkus: 2x 12V in Reihe auf 24V
Ausemaße(mm): 1200x600x500
Mehr will ich dann in meinem Ausführlichen Bericht schreiben
Anhang 27657Anhang 27658Anhang 27659Anhang 27660
- - - Aktualisiert - - -
Sorry für die beiden ersten Bilder das sie auf dem Kopf stehen :(
kann man das hier irgendwo einstellen um 180 Grad drehen ?
Mfg Benny
Liste der Anhänge anzeigen (Anzahl: 2)
Grins da hast du recht, jeder muss sich in Sicherheit begeben^^
Als größten Test zur maximal Belastung was ich gemacht habe:
Mein A3 BJ2002 - Gesamtgewicht: 1300 KG über eine Strecke von 100 Metern mit kleiner Steigung in unserem Industriegebiet zu ziehen .. haha
Mfg Benny
- - - Aktualisiert - - -
@radbruch
also das Resultat auf dem steckbret ist, das die led/cam angeht und die led von der zweiten operation ganz leich an ist,
wenn man die led/cam aber einschalten will reagiert die led von der operation 2 sie wird dann beim Knopf drücken ganz hell!
mfg Benny
- - - Aktualisiert - - -
Und nochmal info für Radbruch,
habe beide einzelnen Sketche ausprobiert, also separat auf dem Steckbrett und separat ausprobiert,
in den arduino reingeladen.
Also einzeln funktionieren sie
Mfg Benny
- - - Aktualisiert - - -
also nochmals der code wie mit " Radbruch" besprochen,
das prob is nun das beim drücken des schalters/tasters, die LED (ROT) von Operation 2 angeht
Obwohl diese LED (ROT) ja vom Lichtsensor gesteuert werden sollte.
Die LED (Gelb) die vom Schalter/Taster an und ausgeschalten wir also sprich die Netzwerkkammera passiert garnichts!
Sprich die falsche LED wird angesteuert .
Code:
/*
Autor: Benjamin Grammel
Datum: 28.02.2014
Projekt: Roboter RSL-7
Verwendungszweck: Operation 1: Netzwerkkamera am Roboter manuell ein und Ausschalten
Operation 2: LED´s per Lichtsensor steuern
Operation 3: Lüfter per Temperatursensor steuern
*/
// ----------------------------------------
// Netzwerkkamera
const int switchPin = 2;
const int camPin = 3;
// LED SENSOR
const int sensorPin = 0;
const int ledPin = 4;
int state; // Variable für Operation1 = Netzwerkkammera Ein / Aus
int lastState; // Variable für Operation1 = Netzwerkkammera Ein / Aus
int ledState; // Variable für Operation1 = Netzwerkkammera Ein / Aus
int lightLevel, lightLevel_high = 0, lightLevel_low = 1023; // Variable für Operation2 = LED Sensor
void setup()
{
pinMode(camPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
Serial.begin(9600);
}
void Operation1() // Netzwerkkamera Ein / Aus
{
state = digitalRead(switchPin);
if (state != lastState)
{
if (ledState == HIGH)
{
ledState = LOW;
Serial.println("LED AUS");
}
else
{
ledState = HIGH;
Serial.println("LED EIN");
}
lastState = state;
}
digitalWrite(ledPin, ledState);
delay(20);
}
// ----------------------------------------
void Operation2() // LED SENSOR
{
lightLevel = analogRead(sensorPin);
analogWrite(ledPin, lightLevel);
if (lightLevel < lightLevel_low)
{
lightLevel_low = lightLevel;
}
if (lightLevel > lightLevel_high)
{
lightLevel_high = lightLevel;
}
lightLevel = map(lightLevel, lightLevel_low+30, lightLevel_high-30, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
void loop()
{
Operation1(); // Netzwerkkamera ein und aus schalten
Operation2(); // Sensor steuert LED
}
hier zwei Bilder hoffe so ist es verständlich!
Anhang 27661Anhang 27662
Mfg Benny
Liste der Anhänge anzeigen (Anzahl: 1)
das freut mich wenn er dir gefällt, über die Baupläne sprechen wir noch :)
gibt keine Baupläne, jedes Teil was man sieht ist auf einer CNC Fräsmaschine (Eumach UMC1000 und Eumach HSM5X ) gefräst
Das RSL7 befindet sich bis zu jeder kleinsten Schrauben und unterlegscheibe im CAD.
Nochmal zum Code,
hab jetzt den Analogen Eingang auf A1 geändert und auch dort eingesteckt und des ledPin statt 4 auf 7 das es übersichtlicher ist.
nochmals wie gesagt einzeln funktionieren die einzelne Schaltungen.
Anhang 27663
Mfg Benny