• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Umfrage Arduino Projekte

Besteht Interesse an Arduino Projekten, die sich auf den Modellbau beziehen?

  • Ja

    Votes: 17 89,5%
  • Nein

    Votes: 1 5,3%
  • Weiß nicht

    Votes: 1 5,3%
  • Mir doch egal

    Votes: 0 0,0%

  • Total voters
    19
D

Deleted member 1492

Gast
Moin Leute,

Im Gegensatz zu früheren Zeiten wo spezielle Elektronik völlig überteuert war, gibt es Heute weitaus mehr Möglichkeiten wenn man programmierbare Einplatinenrechner nutzt, die noch dazu für unglaublich wenig Geld zur Verfügung stehen und als "Clone" zu Preisen zw. 5 - 10 Euro zu bekommen sind.

Eine gute Lichtsteuerung gibt es hier ja schon im Forum, weitere Einsatzmöglichkeiten wären ein Multiswitch (ein Propkanal auf 16 Schaltkanäle), ein Soundmodul, Radarsimulation, Fahrtregler, etc..

Man muss dabei nicht das Rad neu erfinden, denn die meisten Projekte sind frei verfügbar und schnell für wenig Geld nachgebaut. Es geht mir speziell um die Zusammenfassung bezüglich Modellbau und die Möglichkeiten.

Deshalb meine Frage: Besteht Interesse an Arduino Projekten, die sich auf den Modellbau beziehen?

Dann würde sich eine eigene Rubrik lohnen, wo alles zusammen gefasst wird.
 

uwe_q

Mitglied
Eine eigene Rubrik macht sich dafür extrem gut, zumal das deutsche Ardu-Forum recht deutlich für'n Arsch ist. Als Newbie wird man da nur belächelt und soll erst einmal proggen lernen.
 

Devil

Mitglied
Hallo zusammen,
leider ist das von Markus verlinkte "Franzis Know-How-Paket: Arduino im RC-Modellbau" von 2013 und nicht mehr verfügbar.
Vielleicht reicht ja auch eine etwas neuere (2016) Version von Franzis: "Das Franzis Arduino Lernpaket".
Oder gibt es neuere Alternativen ?
LG,Micha
 

yoshi

Betreiber
Mitarbeiter
Diese Sets brauchst du an sich gar nicht. Das sind stinknormale Aduinos und ein paar Bauteile zu überhöhten Preisen. Was wirklich interessant ist bei Franzis, ist die zusätzliche Literatur oder die Lernvideos. Die schaffen einen wirklichen Mehrwert.
 

BAXL

Admin
Mitarbeiter
Ich habe bei mir auch mindestens 3 Arduinos als Paket mit Zusatzhardware liegen. Da habe ich vor vielen Monden mal mit angefangen. Aus Mangel an konkretem Projekt oder Interssenskreis ist das wieder eingeschlafen. Es dürfte nur nicht sofort die Megaapplikation sein, weil man Zeit braucht um in das Thema einzudifundieren um komplexere Projekte umzusetzen. Manchmal sind es zum Beginn die ganz einfachen Sachen, wie man z.B. startet. Also zuerst ein paar Grundroutinen. Zählschleifen Abhängigkeiten, Verarbeitung von Eingangssignalen und daraus folgende Aktionen usw.. wenn man das alleine macht ist es langweilig, machen das mehrere ist das geselliger und ein gewisser Wettbewerb entsteht, das motiviert weiter zu machen.
 

BAXL

Admin
Mitarbeiter
Diese Sets brauchst du an sich gar nicht. Das sind stinknormale Aduinos und ein paar Bauteile zu überhöhten Preisen. Was wirklich interessant ist bei Franzis, ist die zusätzliche Literatur oder die Lernvideos. Die schaffen einen wirklichen Mehrwert.
Wenn man einmal drinsteckt hast Du Recht, wenn man quasi bei 0 Startet sind Komplettsets schon hilfreich, zumal die Teile direkt für die kleinen Versuche des Sets passen und direkt da sind.
 

uwe_q

Mitglied
Wichtig wären zB auch links zu den aktuellen Treibern für die China-ware fürs entsprechende OS.

:) ..und jetzt die Yoshi-Aufgabe:

Man sollte bei Beiträgen dann auch die Möglichkeit haben Source Code darzustelĺen.
Da reicht ne PHP-Syntax-Code-Darstellung als Möglichkeit aus.
 

Devil

Mitglied
Man sollte bei Beiträgen dann auch die Möglichkeit haben Source Code darzustelĺen.
Da reicht ne PHP-Syntax-Code-Darstellung als Möglichkeit aus.
Hmmm, das sollte die Forumssoftware doch so schon können ?

Code:
// Das Array mit den belegten Pins. Die Nullen vorne und hinten sind ein Trick,
// damit sich das Lauflicht, dass sich über mehrere LEDs erstreckt, komplett
// aus dem Bild laufen kann.
int pinArray[] = {0,0,0,6,7,8,9,10,11,12,13,0,0,0};
// Die Anzahl der Elemente im Array. Die Elemente sind dann über die
//Indizes [0] bis [13] zu erreichen.
int pinCount = 14;
// Der aktive Eintrag des Array, pinArray[2] ist das 3(!) Element. Das wird
// zum Start gesetzt, die beiden hinterherlaufenden Lichter kriegen dann die
// Einträge [1] und [0], also sind zum Start alle // anzusprechenden Pins = 0
int activePin = 2;
// Die Laufrichtung, in der für den nächsten Schritt zum activePin addiert
// wird. dx ist +1 (aufwärts im Array) oder -1 (abwärts im Array)
int dx = 1;
// Der vom Potentiometer gelieferte Wert
int poti = 0;
// Mindestverzögerung zwischen zwei Schritten des Lauflichts.
// Mit z.B. mintime=20 kann man die maximale Geschwindigkeit begrenzen.
int mintime = 0;
// setup() wird einmal bei Programmstart ausgeführt
void setup() {
  // Serielle Übertragung starten
  Serial.begin(9600);
  // Durch das Array gehen, alle Pins auf OUTPUT setzen außer es kommt 0.
  for (int i=0; i< pinCount; i++) {
    if (pinArray[i] != 0) {
      pinMode(pinArray[i], OUTPUT);
    }
  }
}
// loop() wird während des Programmablaufs endlos immer wieder aufgerufen
void loop() {
  // Zuerst schalten wir alle Pins of Array auf LOW, als Hilfsfunktion
  // verwenden wir digitalWriteNot0(), damit die Array-Einträge mit
  // Wert 0 ignoriert werden.
  for (int i=0; i<pinCount; i++) {
    digitalWriteNot0(pinArray[i], LOW);
  }
  // Sind wir am Ende des Arrays angekommen? Wenn ja, dann einen Schritt
  // zurückgehen (zum vorletzten 0-Element) und mit dx = -1 die Laufrichtung#
  // ändern.
  if (activePin == (pinCount-1)) {
    activePin = (pinCount - 2);
    dx = -1;
  }
  // Sind wir am Anfang des Arrays angekommen? Wenn ja, dann einen Schritt
  // weitergehen (zum 2. 0-Element) und mit dx = 1 die Laufrichtung aufwärts setzen.
  if (activePin == 0) {
    activePin = 1;
    dx = 1;
  }
  // Zum aktiven Pin die Laufrichtung hinzuzählen. An den Rändern des Array mit
  // den 3 Nullen sind wir damit mindestens 2 Elemente vom Rand entfernt, haben
  // also Platz um 2 weitere LEDs leuchten zu lassen
  activePin += dx;
  // Potentiometer von Pin 0 einlesen (Wert zwischen 0 und 1023)
  poti = analogRead(0);
  // Wenn der Wert < 1023 ist, dann...
  if (poti < 1023) {
    // Die LED auf activePin einschalten
    digitalWriteNot0(pinArray[activePin], HIGH);
    // und die LED in entgegengesetzter Laufrichtung davor
    digitalWriteNot0(pinArray[activePin-dx], HIGH);
    // und eine weitere LED in entgegengesetzter Laufrichtung davor
    digitalWriteNot0(pinArray[activePin-2*dx], HIGH);
    // Das funktoniert, weil wir durch die 3 Nullen an den Rändern des Arrays genug
    // Platz haben, um im Array zu lesen, ohnen die Arraygrenzen zu sprengen. Wenn
    // als Pin eine 0 drinsteht, wird dieses beim Schalten der LEDs einfach ignoriert.
  }
  // Debug-Ausgabe für den Seriellen Monitor. Einfach über "Tools" einschalten
  Serial.print(poti);
  Serial.print(" - ");
  Serial.println(activePin);
  // Den geviertelten Wert des Potentiometers verwenden wir für die Wartezeit
  // zwischen den Schritten in Millisekunden mintime kann als Mindestwert gesetzt
  // werden, damit wird die maximale Geschwindigkeit des Lauflichts begrenzt.
  delay(mintime+analogRead(0)/4);
}
// digitalWriteNot0() ist eine Hilfsfunktion, die nur dann digitalWrite() ausführt,
// wenn das übergebene Pin nicht 0 ist. Damit werden die Füllelemente des pinArray
// bei der Ausgabe einfach ignoriert.
void digitalWriteNot0(int pin, boolean state) {
  if (pin > 0) {
    digitalWrite(pin, state);
  }
}
Oder eben als php:
PHP:
// Das Array mit den belegten Pins. Die Nullen vorne und hinten sind ein Trick,
// damit sich das Lauflicht, dass sich über mehrere LEDs erstreckt, komplett
// aus dem Bild laufen kann.
int pinArray[] = {0,0,0,6,7,8,9,10,11,12,13,0,0,0};
// Die Anzahl der Elemente im Array. Die Elemente sind dann über die
//Indizes [0] bis [13] zu erreichen.
int pinCount = 14;
// Der aktive Eintrag des Array, pinArray[2] ist das 3(!) Element. Das wird
// zum Start gesetzt, die beiden hinterherlaufenden Lichter kriegen dann die
// Einträge [1] und [0], also sind zum Start alle // anzusprechenden Pins = 0
int activePin = 2;
// Die Laufrichtung, in der für den nächsten Schritt zum activePin addiert
// wird. dx ist +1 (aufwärts im Array) oder -1 (abwärts im Array)
int dx = 1;
// Der vom Potentiometer gelieferte Wert
int poti = 0;
// Mindestverzögerung zwischen zwei Schritten des Lauflichts.
// Mit z.B. mintime=20 kann man die maximale Geschwindigkeit begrenzen.
int mintime = 0;
// setup() wird einmal bei Programmstart ausgeführt
void setup() {
  // Serielle Übertragung starten
  Serial.begin(9600);
  // Durch das Array gehen, alle Pins auf OUTPUT setzen außer es kommt 0.
  for (int i=0; i< pinCount; i++) {
    if (pinArray[i] != 0) {
      pinMode(pinArray[i], OUTPUT);
    }
  }
}
// loop() wird während des Programmablaufs endlos immer wieder aufgerufen
void loop() {
  // Zuerst schalten wir alle Pins of Array auf LOW, als Hilfsfunktion
  // verwenden wir digitalWriteNot0(), damit die Array-Einträge mit
  // Wert 0 ignoriert werden.
  for (int i=0; i<pinCount; i++) {
    digitalWriteNot0(pinArray[i], LOW);
  }
  // Sind wir am Ende des Arrays angekommen? Wenn ja, dann einen Schritt
  // zurückgehen (zum vorletzten 0-Element) und mit dx = -1 die Laufrichtung#
  // ändern.
  if (activePin == (pinCount-1)) {
    activePin = (pinCount - 2);
    dx = -1;
  }
  // Sind wir am Anfang des Arrays angekommen? Wenn ja, dann einen Schritt
  // weitergehen (zum 2. 0-Element) und mit dx = 1 die Laufrichtung aufwärts setzen.
  if (activePin == 0) {
    activePin = 1;
    dx = 1;
  }
  // Zum aktiven Pin die Laufrichtung hinzuzählen. An den Rändern des Array mit
  // den 3 Nullen sind wir damit mindestens 2 Elemente vom Rand entfernt, haben
  // also Platz um 2 weitere LEDs leuchten zu lassen
  activePin += dx;
  // Potentiometer von Pin 0 einlesen (Wert zwischen 0 und 1023)
  poti = analogRead(0);
  // Wenn der Wert < 1023 ist, dann...
  if (poti < 1023) {
    // Die LED auf activePin einschalten
    digitalWriteNot0(pinArray[activePin], HIGH);
    // und die LED in entgegengesetzter Laufrichtung davor
    digitalWriteNot0(pinArray[activePin-dx], HIGH);
    // und eine weitere LED in entgegengesetzter Laufrichtung davor
    digitalWriteNot0(pinArray[activePin-2*dx], HIGH);
    // Das funktoniert, weil wir durch die 3 Nullen an den Rändern des Arrays genug
    // Platz haben, um im Array zu lesen, ohnen die Arraygrenzen zu sprengen. Wenn
    // als Pin eine 0 drinsteht, wird dieses beim Schalten der LEDs einfach ignoriert.
  }
  // Debug-Ausgabe für den Seriellen Monitor. Einfach über "Tools" einschalten
  Serial.print(poti);
  Serial.print(" - ");
  Serial.println(activePin);
  // Den geviertelten Wert des Potentiometers verwenden wir für die Wartezeit
  // zwischen den Schritten in Millisekunden mintime kann als Mindestwert gesetzt
  // werden, damit wird die maximale Geschwindigkeit des Lauflichts begrenzt.
  delay(mintime+analogRead(0)/4);
}
// digitalWriteNot0() ist eine Hilfsfunktion, die nur dann digitalWrite() ausführt,
// wenn das übergebene Pin nicht 0 ist. Damit werden die Füllelemente des pinArray
// bei der Ausgabe einfach ignoriert.
void digitalWriteNot0(int pin, boolean state) {
  if (pin > 0) {
    digitalWrite(pin, state);
  }
}
LG,Micha
 

BAXL

Admin
Mitarbeiter
Nur mal so als Tipp, Franzis macht zwischendurch immer Angebote für Arduinos, Raspberry Pi und Pretzelboards und ähnliche andere. Da ist dann der volle Lieferumfang der Kombikästen, z. B. statt 79€ für 29€ oder so. Hier mal ein Beispiel: https://www.franzis.de/maker/lernpakete/franzis-raspberry-pi-maker-kit-sensoren-bausatz

Die Angebote laufen dann für ungefähr eine Woche. Einziger Haken, um das immer mitzubekommen muss man den Newsletter abonnieren.
 

uwe_q

Mitglied
Ich hab da mal bei XenForo reingeschaut. Da gibt es irgend ein "Syntax-Highlighter" als Add-on zu dieser Forensoftware.
Leider ist mein englisch miserabel, aber wenn da was geht, ist doch alles okay.
Add-On rein - fertsch!!

Es geht ja bei einer Code-darstellung um die unveränderte Darstellung von #32 und #9, also Leerzeichen und Tab's, sowie die farbliche Hervorhebung resrvierter Wörter. So etwas liest sich als *.txt echt besch.....

Da muss doch was zu machen sein.
( wenn yoshi da nix weiss, müssen wir mal für ihn da sein )

:) wir klauen ihm ja nicht seinen Reinigungsbesen :)
 

yoshi

Betreiber
Mitarbeiter
Es geht ja bei einer Code-darstellung um die unveränderte Darstellung von #32 und #9, also Leerzeichen und Tab's, sowie die farbliche Hervorhebung resrvierter Wörter. So etwas liest sich als *.txt echt besch.....
Die unveränderte Darstellung hat @Devil schon beschrieben. Das funktioniert über den CODE-Befehl. Dann setzt die Forensoftware das geschriebene nicht als BB-Code um.

Die farbliche Abgrenzung bestimmter Textbereiche ist da schon schwieriger. Denn bei den ganzen IDEs, Interpretern und Compilern gibt es da unterschiedliche Farbgebungen. Z.B. kannst du einen Arduino mit der Aduino-IDE, AVR-Dude oder mit Atmel Studio programmieren. Die Oberflächen und Farbgebungen der Programme unterscheiden sich aber erheblich. Natürlich gibt es da AddOns oder PlugIns für, die eine individuelle Farbeinstellung erlauben, nur mögchte ich die nicht unbedingt haben. Mit jeder Änderung der Forensoftware werden Updates und Upgrades erschwert.
 
Top Bottom