Lernpacket Arduino/Freeduino Inbetriebnahme und Installation

In der zuletzt im Attachment aufgeführten Arduino-Response nach dem Hochladen in die HW habe ich
die Stelle Found upload port: COM5 fett markiert. Es ging hier um COM5, obwohl im IDE bei mir ist die Einstellung nur auf COM9.

Ist doch alles ok!

Das laufende Programm auf dem SAM nutzt COM9
Es bekommt die Mitteilung, den Bootloader zu starten.
Dieser Bootloader erscheint auf COM5, nachdem COM9 sich verabschiedet hat.
Das Programm wird hochgeladen und verifiziert.
Der Bootloader verabschiedet sich, und nimmt COM5 mit ins Nirvana.
Die Anwendung läuft los, und macht dir wieder ein COM9 dahin.

Also: Alles so wie es soll.

Meine Frage wäre: wo könnte das Fehler liegen?

Da ist keiner.
Mit deinen COM Ports ist alles völlig in Ordnung.

Bis hier hin: Kein Fehler!

Warum das Programm nicht das tut, was du willst?
KA, kann ich auch nicht testen.

Nachtrag:
Halt!

while (!Serial);
Du weißt, was diese Zeile macht?
Sie wartet darauf, dass du den seriellen Monitor, oder sonst wie COM9, öffnest!
Bis dahin läuft kein Motor.

1 Like

uwefed:
Hab den Tread geteilt.
Der Neue Tread ist auf Arduino Engineering-Kit-Rev-1. (AeK) AKR1000 Inbetriebnahme und Installation - Deutsch - Arduino Forum
zu finden.
Grüße Uwe

Es tut mir leid, ich habe Ihre Nachricht nach schon nach Posten gesehen. Dann habe ich meine Frage in das von Ihnen vorgeschlagene Thread kopiert. Und jetzt habe ich hier Antwort... Ich bitte Sie, die Antwort nicht zu löschen.
Grüß
Igor

combie:
Ist doch alles ok!

Das laufende Programm auf dem SAM nutzt COM9
Es bekommt die Mitteilung, den Bootloader zu starten.
Dieser Bootloader erscheint auf COM5, nachdem COM9 sich verabschiedet hat.
Das Programm wird hochgeladen und verifiziert.
Der Bootloader verabschiedet sich, und nimmt COM5 mit ins Nirvana.
Die Anwendung läuft los, und macht dir wieder ein COM9 dahin.

Also: Alles so wie es soll.Da ist keiner.
Mit deinen COM Ports ist alles völlig in Ordnung.

Bis hier hin: Kein Fehler!

Danke.
Zuerst habe ich den seriellen Monitor geöffnet und dort war Warning: LOW Battery ALL SYSTEMS DOWN
Ich habe die Akku dann versucht, aufzuladen, aber dann war die Spannung an der AKKU 4.5V.... hm (Warum nicht 0V - wenn akku kaputt gegangen sollte?).
Ok. ich bestelle mir zuerst ein neues 11.1 V LiPo....
ich sehe es hier:
EAN
4016139336220

Modellbau-Akkupack (LiPo) 11.1V 1000 mAh Zellen-Zahl: 3 25 C Softcase BEC kaufen - Spielwaren | Thalia
Nur sehe ich hier die dort
Maße (L/B/H)
7,5/3,1/2,2 cm

??Mein Bedenken ist: die Breite meiner jetzigen AKKU von Arduino sind <3cm und die Höhe <2cm. Die AKKU von Thalia könnte bisschen größer sein als meine von Arduino. Wird es geometrisch später (beim Aufbau von Modellen) nicht zu der Geometrie-Kollision führen? Sind im AKKU-Thalia ausreichend mA?
Ich wollte es schneller bestellen...

combie:
Nachtrag:
Halt!

while (!Serial);
Du weißt, was diese Zeile macht?
Sie wartet darauf, dass du den seriellen Monitor, oder sonst wie COM9, öffnest!
Bis dahin läuft kein Motor.

Vielen Dank.

In "C" - beginne ich was zu verstehen, aber bin kein Profi.

Also zum > while (!Serial);
// Ich entschuldige mich wenn es zu einfach klingt, aber... bitte... semantische Klärungsbedarf:
// (!Serial) . bedeutet als Bedingung: a) kein serieller Monitor aktiv oder b) keine Verbindung über serielle
// Schnittstelle/COM9 ? COM9-USB trennen? a) und b) - beide klingen mir linguistisch = serial

Bedeutet das: solange (nicht serial) -> Establishing the communication with the motor shield (=Motor an)??

Grüß
Igor

Note: google translate

Auf bestimmten Karten blockiert while (! Serial) die Ausführung von Code, bis Sie eine Verbindung mit einem Terminalprogramm (z. B. seriellem Monitor) herstellen. MKR ist einer von ihnen.

Es steckt mehr dahinter; Dies gilt für Systeme, die eigenständig ausgeführt werden. Sobald ein Terminalprogramm eine Verbindung hergestellt hat und Sie den USB-Anschluss trennen, können Sie Ihren Arduino fast zum Stillstand bringen.

Die Lösung besteht darin, mit Serial.availableForWrite () zu prüfen, ob genügend Platz für den zu druckenden Text vorhanden ist, und nur zu drucken, wenn genügend Platz vorhanden ist.

In "C" - beginne ich was zu verstehen, aber bin kein Profi.

Tipp:
Du programmierst nicht in C, sondern in C++.
(nur, damit du dir das richtige Buch kaufst)

1 Like

combie:
Nachtrag:
Halt!

while (!Serial);
Du weißt, was diese Zeile macht?
Sie wartet darauf, dass du den seriellen Monitor, oder sonst wie COM9, öffnest!
Bis dahin läuft kein Motor.

Herzlichen Dank! Prima!
Nach dem ich Serieler Monitor eingeschaltet habe - dreht sich der DC_Motor periodisch in verschienenen Richtungen.
Und neue AKKKu ist eingegangen: 11.1V !
So lauft der Motor_test.ino per Arduino.

Fein!

Jetzt wäre die nächste Frage: wie stoppe ich den DC_Morot vom "Motor_test.ino"?
Ja klar, ich konnte das HW-mäßig durch OFF-Schalter in Motor-Carrier-Schalung ausschalten.

Geht das per Arduino_IDE?

Ja, ich weiss, es geht SW-mäßig irgendwie durch C++Code, aber das muss ich noch lernen.
Ginge es, die Ausführung der "Motor_test.ino" aufzuhören (auf schnellem Weg)?

Der nächste Test mit Code "Motor_test_encoder.ino" hat beim dritten "Hochladen" funktioniert.
Da muss ich noch genauer schauen: auch C++Code versuchen zumindest im Großen und Ganzen in Rictung des Verstehens.

Tja....
Natürlich ist es unglaublich hilfreich, die Sprache, welche man verwendet, auch zu kennen.
Je besser man sie kennt, desto leichter fällt einem das Programmieren.
Auch das verstehen von anderer Leute Programme.

Hier habe ich mal ein Buch vorgestellt.
evtl gefällt dir das ja.

Das rum basteln in fremden Programmen ist nur bedingt hilfreich.
Es ist sogar recht schwierig, auch wenn man schon SEHR viel Übung hat.

  1. man muss die verwendeten Sprachmittel kennen
  2. man muss die Absicht des Erstellers herauslesen
  3. die Fehler und Böcke, die der Ersteller eingebaut hat, erkennen und beheben
  4. für eigene Zwecke modifizieren, was nicht selten einen Totalumbau erfordert

Ja, keine Frage, das lesen und durcharbeiten von Beispielen und Tutorials, kann einem so manche Erleuchtung verpassen. Aber auch auf Irrwege locken.

Im Grunde lautet die Strategie:
Basis Wissen aufbauen und üben, üben. ü......

Danke für Tipps,

ich wollte zuerst die Praxis-Projekte durchzuarbeiten: im Arduino Engineering Kit die Matlab-License zeitlich begrenzt ist. Und da sind Lösungen auf C/C++ integriert: um die schnell zu verstehen - habe ich die Arduino-Duemilanove (Franzis-Verlag) genommen.
und dann die Programmier-Kenntnisse durch das Lesen und üben sammeln.

Ihre Tipps sind volltreffer, auch zum Thema Lernbuch.

Was für eine IDE wird in diesem C++ Kurs/Buch zum Programmieren beschrieben und für die ÜbungsBeispiele verwendet?
Geht es mit Microsoft Visual Studio 2019 oder sonst mit einer anderen kostenlosen IDE welches vom Buch beschreibt ?

Wäre die IDE mit Windows10 kompartibel?

http://www.cppbuch.de/downloads.html

1 Like

Vielen Dank.

Ich hätte noch Frage zur Inbetriebnahme vom Ultraschallsensor. Im Seriellen Monitor werden die Werte (Abstand zum nächsten Hinderniss) angezeigt (und die "tanzen" dabei mit einer akzeptablen Tolleranz) aber nicht reale Abstände sondern immer 810-830cm.... auch nach dem Ausschalten und nach dem neuen Hochladen. Auch wenn ich Abstand zum Hindernis 30cm, 300cm mache - es wird nichts im seriellen Monitor geändert: es bleiben immer 810-830 cm - eqal wonach ich den Sensor wende und richte.

Ich finde es merkwürdig, weil wenn etwas wesentliches nicht richtig war, dann hätte die Konfiguration überhaupt nichts im seriellen Monitor anzeigen dürfte...

Warum ist das so und was könnte die Lösung sein?

Und noch eine allgemeine Frage.

Hier wird mir wirklich geholfen. Ich bin für die Hilfe sehr dankbar. Es könnten hier Regeln oder Sitten und Gebräuche für diese Hilfe sein - vielleicht kenne ich die nicht alle. Wenn es so sein sollte - bitte ich, die Regeln mir wissen zu lassen.

KA...
Woher auch?

Gibt es!

z.B. macht es wenig Sinn, über ein Problem zu jammern, aber Code, Schaltplan und die sonstigen notwendigen Fakten geheim zu halten.
:dancer:

[quote="combie, post:38, topic:703290, full:true"]

KA...
Woher auch?

Gibt es!

z.B. macht es wenig Sinn, über ein Problem zu jammern, aber Code, Schaltplan und die sonstigen notwendigen Fakten geheim zu halten.
:dancer:
[/quote]

Anbei ist der Schaltplan:

Imgur

Anbei ist C/C++Code (jetzt irgendwie bekomme ich nicht das übliche Feld für den Code, sondern einfach so:

/***********************************************************************************
Arduino Engineering Kit Ultrasonic Range Sensor Test
This sketch demonstrates some APIs exposed by the MKR Motor Shield library.
For the complete list, visit the reference page on https://www.arduino.cc/en/Reference/MKRMotorShield
This example code is in the public domain.

Description: Uses the seed ultrasonic range sensor connected to IN1 or IN2 and plot the values
in serial monitor
****************************************************************************************/

// this constant won't change. It's the pin number of the sensor's output:

//const int pingPin = A6; // IN1
//const int pingPin = A1; // IN2
//const int pingPin = A5; // IN3
const int pingPin = A2; // IN4

void setup() {
// initialize serial communication:
Serial.begin(9600);
}

void loop() {
// establish variables for duration of the ping, and the distance result
// in inches and centimeters:
long duration, inches, cm, mm;

// The sensor is triggered by a HIGH pulse of 2 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);

// The same pin is used to read the bounced signal: The latency of this HIGH pulse
//represents the flight time of the sound wave in microsencods.

pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);

// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
mm = microsecondsToMilimeters(duration);

Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm, ");
Serial.print(mm);
Serial.print("mm");
Serial.println();

delay(100);
}

long microsecondsToInches(long microseconds) {
// There are 73.746 microseconds per inch (i.e. sound travels at 1130 feet per second).
// This gives the distance travelled by the soundwave, back and forth,
// We divice the total time by 2 to get the distance to the object.
return microseconds / 74 / 2;
}

long microsecondsToMilimeters(long microseconds) {
// The speed of sound is 340 m/s or 2.9 microseconds per milimeter.
// We divice the total time by 2 to get the distance to the object.
return microseconds / 2.9 / 2;
}

long microsecondsToCentimeters(long microseconds) {
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// We divice the total time by 2 to get the distance to the object.
return microseconds / 29 / 2;
}

Die Bilder habe ich angehängt