Show Posts
|
|
Pages: 1 2 [3] 4 5 ... 13
|
|
32
|
International / Deutsch / Re: Fritiertes Silikon?
|
on: July 30, 2012, 10:27:22 am
|
Hallo, bei dieser Überschrift hatte ich ja schon mit dem schlimmsten gerechnet.  War wohl im Englischen "fried silicon"? engl.: silicon -> deutsch: Silizium engl.: silicone -> deutsch: das Zeug u.a. für Brustimplantate engl.: to fry -> deutsch: braten, brutzeln, frittieren Ich konnte mir diese Anmerkung nicht verkneifen. Aber ich arbeite noch daran, das Bild aus meinem Kopf zu bekommen. Ist nicht bös' gemeint! Vielleicht gibts ja trotz der Überschrift von anderen ein paar hilfreiche Tipps für die Fehlersuche  Gruß Wolfgang
|
|
|
|
|
33
|
International / Deutsch / Re: Doofe Frage: String to Integer
|
on: June 03, 2012, 03:51:51 am
|
char test[]=" 12345"; // Ein Text mit einer Zahl drin char test2[80] = "77"; // In Test2 könnten dynamisch noch längere Texte gespeichert werden. int i = atoi(test); // i = 12345 Die Zahl selbst i = atoi(test2); // i = 77 Wenn ich das richtig verstanden habe, sucht arduinosfish eine Umwandlung eines Strings der Arduino-Stringklasse in einen Integer und nicht die Umwandlung eines char-Arrays in einen Integer. Daher nochmal mein vorheriger Verweis auf die toInt()-Methode der String-Klasse. Wenn er natürlich die Strings ganz wegwirft, ist das char-Array sicherlich ressourcen-sparender, aber eine String-Klasse ist in der Anwendung (meistens) deutlich komfortabler (z.B. Strings mit "=" zuweisen, statt mit strcpy() kopieren, mit "+" oder "+=" zwei Strings verbinden, statt mit strcat(), mit "==" oder "!=" auf Gleichheit testen, statt mit strcmp(), mit "<" oder oder "<" alphabetisch vergleichen, usw.). [Edit]: Entschuldigung, ich sehe gerade, dass sich der Beitrag von michael_x an harding und nicht an arduinofish gerichtet hat und für dessen Frage sicherlich hilfreich ist. Schönen Tag noch. Wolfgang
|
|
|
|
|
34
|
International / Deutsch / Re: char Frage
|
on: June 02, 2012, 02:53:23 pm
|
In C/C++ ist keine direkte Zuweisung einer Zeichenkette (= char-Array) an ein anderes char-Array erlaubt. Dazu kann man stattdessen char Str1[15]; strcpy (Str1, "arduinoarduino"); // Vorsicht! Keiner und nichts überprüft die Größe des Ziels!!!
nehmen. Und mit Strings der Klasse "String" funktioniert die Zuweisung mit dem Gleichheitszeichen, weil der Zuweisungsoperator "=' für diese Klasse entsprechend überladen ist.
|
|
|
|
|
35
|
International / Deutsch / Re: Doofe Frage: String to Integer
|
on: June 02, 2012, 08:50:35 am
|
Die Klasse "String" kennt die Methode "toInt". Liefert einen long-Wert zurück (auch wenn sie toInt heißt). Ruft intern atol() auf um sich auf den internen char-Puffer der String-Klasse zu stürzen. Es lohnt sich, bei Bedarf mal in die Datei WString.h bzw. WString.cpp (irgendwo tief verborgen unterhalb des Arduino-Verzeichnisses) zu schauen. Da kann man so manches entdecken.  Edit: Das Thema hatten wir schon mal. Siehe auch Reply #9 in diesem Thread: http://arduino.cc/forum/index.php/topic,95230.msg716081.html#msg716081Da gibt's auch einen Programm-Schnipsel bezüglich der Anwendung von toInt(). Viel Erfolg Wolfgang
|
|
|
|
|
36
|
International / Deutsch / Re: Mega 2560 + Strom sparen?
|
on: May 31, 2012, 01:40:50 pm
|
Hat keiner ne Idee:)?
Doch, ich hätte da was anzubieten: 1. Die Fehlermeldungen resultieren daher, dass BODS und BODSE nicht in der controllertyp-spezifischen Header-Datei für den 2560 definiert sind. Es handelt sich dabei um Bit-Nummern in einem speziellen Register des Controllers. 2. Das dürfte daran liegen, dass die Betriebsart "BOD Disable" beim ATMega 2560 nicht unterstützt wird (wohl aber beim 328P). Jedenfalls habe ich im Datenbuch für den 2560 nichts dergleichen gefunden. 3. Folglich dürfte Uwe mit seiner Vermutung richtig liegen, dass die Library nicht für den 2560 geeignet ist, weil der "nicht alles kann", was der 328P kann. 4. Könnte man als Tüftler versuchen, die Library so anzupassen, dass die beim 2560 nicht unterstützten Betriebsarten aus dem Programmcode herausgeworfen werden (und den Rest behalten). Das erfordert aber ganz sicher auch ein fleißiges Studium des Datenbuchs, um den Code der Library überhaupt zu verstehen. 5. Frage ich mich, ob es auf einem ATMega-Board Sinn macht, den eigentlichen Controller auf möglichst geringe Stromaufnahme zu trimmen, während die sonstigen Chips auf dem Board (z.B. Controller für USB<->RS232-Wandlung, Power-LED, usw.) von alledem nichts wissen. Gruß Wolfgang
|
|
|
|
|
37
|
International / Deutsch / Re: Einsteigerfrage Example "Blink"
|
on: May 17, 2012, 09:24:13 am
|
Also ich würde da nicht pauschal von "Linux" reden, unter Ubuntu 12.04 (64-bit) blinkt dein Ursprungssketch nämlich munter vor sich hin ...
Diese Version ist ja auch ziemlich neu. Mag sein, dass hier irgendwie eine andere/neuere/schönere/bessere Version der Libraries/Compiler/binutils installiert wird. Darin liegt ja das Problem wohl generell. Gruß Wolfgang
|
|
|
|
|
38
|
International / Deutsch / Re: Einsteigerfrage Example "Blink"
|
on: May 16, 2012, 12:29:47 pm
|
In Windows.
Könnte also daran liegen, dass mx55 SuSE-Linux verwendet und dieses Problem nur bei der Linux-Compiler/Library-Version (und da eventuell auch nur bei Arduino 1.0) auftritt.
|
|
|
|
|
40
|
International / Deutsch / Re: Linux auf ATMega 1284p laufen lassen
|
on: April 07, 2012, 07:27:54 am
|
Dafür kannst du im Sommer Ski bzw Snowboard fahren. Hat doch alles was für sich...
Geil, so eine Skihalle, nicht wahr? Ich denke immer an die Stromkosten, wenn ich an dem Ding bei 30 Grad im Schatten vorbeifahre. 
|
|
|
|
|
42
|
International / Deutsch / Linux auf ATMega 1284p laufen lassen
|
on: April 07, 2012, 05:48:06 am
|
Hallo zusammen, habe gerade die neueste Ausgabe der Zeitschrift c't im Briefkasten vorgefunden. Darin wird kurz über ein Projekt berichtet, bei dem jemand Linux 2.6.34 auf einem ATMega1284p bootet und es ist ein Link zu der Projektseite angegeben. http://www.heise.de/ct/12/09/links/048.shtmlIch hab' mich ja schon gefragt, ob das ein verspäteter Aprilscherz ist... Das ganze funktioniert wohl über einen selbstgeschriebenen ARM-Emulator für den ATMega. Ist also keinesfalls eine native ATMega-Version von Linux! Es wird ein 30-pin SIMM Memory Modul zur RAM-Erweiterung benutzt und eine SD-Karte. Bauanleitung ist auch vorhanden. Doch bevor jetzt die allgemeine Euphorie über das machbare ausbricht, sollte man sich doch mal die Geschwindigkeit des ganzen ansehen (im Abschnitt "How fast is it?") und intensiv darüber nachdenken, was sinnvoll ist und was nicht. Kann natürlich cool sein, zu sagen: "Ich hab Linux auf meinem Arduino gebootet!"  Ganz anders beurteile ich einen weiteren dreiseitigen Artikel in der gleichen Ausgabe der c't, in dem beschrieben wird, wie man Arduino-Programme mit dem kostenlos erhältlichen AVR Studio 5.1 entwickeln und debuggen kann. Da stehe ich voll hinter. Gruß Wolfgang
|
|
|
|
|
43
|
International / Deutsch / Re: Stößt man bei der Arduino-Programmiersprache an die Grenzen?
|
on: March 19, 2012, 12:50:02 pm
|
Das Multitasking geht? Das sieht erstmal ziemlich kompliziert aus, wie verhält sich das in der Praxis?
Die Unterstützung von Multitasking ist sicherlich gegeben. Prinzipiell wird so etwas ja durch das Betriebssystem zur Verfügung gestellt. Und so etwas hat der Arduino ja nicht. Wenn man die Multitasking-Fähigkeiten benötigt, muss man entweder die von MaFu angesprochenen Bibilotheken verwenden oder etwas selbst programmieren. Was aber je nach Aufgabestellung durchaus möglich ist. Z.B. kann man mit Interrupts arbeiten, und dadurch eine Art Multitasking nachbilden: Man kann durch bestimmte Ereignisse (Änderung von Eingangssignalen, Eintreffen von Zeichen über die serielle Schnittstelle, Erreichen von Zählerständen im Controller, Ablauf von Zeitgebern, usw.) den normalen Ablauf des Programms in der Endlostschleife in der Funktion loop() unterbrechen und den zum Ereignis passenden Programmcode ausführen (quasi anderer Task). Stichwort: ISR/Interrupt Service Routine. Wenn der Code dann abgeabeitet ist, wird wieder in loop() zurückgesprungen und dort weiter gemacht. Wobei natürlich gewisse Randbedingungen zu berücksichtigen sind. Um das Ganze zu verstehen, sollte/muss man allerdings ein wenig suchen und lesen. Aber da hilft Tante Google sicherlich, etwas zu finden (Stichwort: AVR, ISR, interrupt, programming): hat gerade versuchsweise 67500 Ergebnisse geliefert. Aber auch bei Linux oder Windows muss man sich ja erst einmal schlau machen, wenn man Multitasking verstehen will. Aber das muss man sich ja nicht von heute auf morgen aneignen. Macht auf jeden Fall Spaß, sich damit zu befassen. Finde ich. Gruß Wolfgang
|
|
|
|
|
44
|
International / Deutsch / Re: String zu Int
|
on: March 06, 2012, 08:54:51 am
|
Hallo, ich kann's im Augenblick nicht ausprobieren, aber vielleicht geht es so: char puffer[50]; // genügend gross String s = "101";
// Angaben für Version 0022, Version 1.0 sieht ein wenig anders aus // wie der Name sagt... s.toCharArray(puffer, sizeof puffer);
int i = atoi(puffer); Serial.println(i);
// oder mit toInt() vielleicht einfacher so...
// toInt() anwenden auf eine Instanz eines String-Objektes long l = s.toInt(); // liefert einen long-Wert zurück (trotz des Namens!) Serial.println(l);
Neugierige schauen in WString.h / WString.cpp nach  @mkl0815: toInt() greift übrigens direkt auf den internen Puffer des Objektes zu und ruft damit lediglich atol() auf. Wolfgang
|
|
|
|
|