Show Posts
Pages: 1 [2] 3 4 ... 184
16  International / Deutsch / Re: Bezugsquelle Bauteil AS5262 on: April 18, 2014, 05:36:29 am
Quote
Aber die haben auch noch andere als Muster, scheinbar für 0$.
Wie es halt bei Mustern so ist:
A) denen ist es ziemlich egal (und du kriegst ein Riesen-UPS-Express-Paket mit ein bis drei aufwendigst verpackten Chips für lau)
B) du hinterlässt einen halbwegs professionellen Eindruck ( Firmenname, passende email-Adresse, und Vorstellung davon, was deine "anspruchsvolle Anwendungen mit hoher Auflösung" leistet und wie und wann du - wenn dein Prototyp funktioniert - dein Gerät produzieren und vermarkten willst smiley-wink
C) jemand grinst und überlegt, ob deine Kontaktdaten überhaupt (mit Sperrvermerk Bastelspinner) gespeichert werden sollen.

Auf 0$ oder 60$ kommt es (ausser für dich) kaum an: Von den 60$ ( davon 30 für den Versand ) können die nicht leben
Im Fall A) oder B) sind es Peanuts und günstiges Marketing
Im Fall C)  wenn es Leute wie dich nicht abschreckt, na ja, dann kriegst du es halt für den Preis.
17  International / Deutsch / Re: Fragen an die Profis (Tastatur Input Verabeitung und SD Log) on: April 17, 2014, 10:44:44 am
Quote
da steht auch noch Zeug vom vorherigen Durchlauf drin!
... sonst könnte der heartbleed bug nicht funktionieren smiley-wink
18  International / Deutsch / Re: Index außerhalb des gültigen Bereichs / Division durch NULL on: April 17, 2014, 10:41:06 am
Quote
habe gerade eine Erkenntnis, die ich nicht glauben mag.
Ich kann auf Elemente eines Arrays zugreifen die außerhalb des definierten (gültigen) Bereichs liegen, ohne eine Fehlermeldung zu bekommen. Dabei ist nicht nur abfragen, sondern auch das zuweisen von Werten, möglich.

Das hast du richtig gesehen. Welcome to the Club smiley-wink

Wer soll das (und wie) verbieten? Ohne Bildschirm im BIOS macht ein bluescreen keinen Sinn. Und "access violation" ist erst recht ein Fremdwort ohne Betriebssystem.
In der Regel wird nicht mal nach dynamischer Speicherbelegung geprüft, ob als Ergebnis 0 ( als Fehlerkennzeichen) geliefert wurde, sondern ungeprüft als Adresse verwendet, was erst indirekt, aber ziemlich bald, zu Problemen führt smiley-wink

Immerhin kannst du auf ein byte beliebig oft und viel dazuaddieren, ohne dass sich eins der Nachbar-Bytes verändert.
Das ist doch super, oder ?
Code:
void setup() {
static byte data[3] = {0,163,0};
data[1] += 12343567; // da meckert der Compiler nicht !
Serial.begin(115200);
Serial.println( data[0], DEC);  // bleibt 0
Serial.println( data[1], DEC);   // 42, warum nur ? ;)
Serial.println( data[2], DEC);  // bleibt 0
}
19  International / Deutsch / Re: Fragen an die Profis (Tastatur Input Verabeitung und SD Log) on: April 17, 2014, 09:52:27 am
Quote
Das Char ist dann leer.
Das ist ein missverständlicher Ausdruck, bei dem sich (vermutlich nicht nur mir) die Nackenhaare sträuben.
ein Array von char wird auch gerne string oder c-string genannt, was allerdings nicht mit einem String Objekt verwechselt werden darf.
Ein char* ( Pointer, mit dem Sternchen !) ist die Adresse eines char,
und damit gegebenfalls auch die Anfangsadresse eines char - Arrays, und kann so meist genauso verwendet werden.
 
Jedenfalls ist in solch einem Text alles nach dem ersten Ende - '\0' -Zeichen undefiniert,
und wird von Funktionen die mit char* arbeiten, nicht mehr verwendet.
Wenn TXTdisp[0]  den Wert 0 ( das gleiche wie '\0' ) behält, bleibt das Ding "leer", egal was in TXTdisp[1] und weiteren Bytes steht oder eingetragen wird.. 

Tip: am besten immer die index-Variable mit setzen, und nicht vergessen, vor einer Verwendung des char* an der richtigen Stelle die Ende-Kennung zu setzen.

Code:
const byte TXTLEN=20; 
byte index:
char TXTdisp[TXTLEN+1];  // Platz für 20 Zeichen + Ende-Kennung
...
index = 0;   //  TXTdisp löschen
TXTdisp[index] = 0;

Code:
char c = 'X'; 
if (index  < TXTLEN)  TXTdisp[index++] = c;  // Zeichen c in TXTdisp am Ende anfügen
TXTdisp[index] = 0;  // und Endekennung neu setzen
20  International / Deutsch / Re: Maximalen Differenzwert zeitabhängig ausgeben on: April 17, 2014, 04:29:04 am
Quote
dauert ein loop Durchlauf 10 Sekunden
Auf Dauer, wenn da jemals was interaktives dazu soll, blamierst du dich natürlich damit  smiley-wink
Keiner drückt eine Taste 10 Sekunden lang, ohne dass was passiert.
21  International / Deutsch / Re: 12V Lüfter über PWM on: April 17, 2014, 04:22:23 am
Dafür ist der 5V Pin ( und besonders der Spannungsregler davor ) gar nicht gemacht.
Entweder der Vin-Pin, oder umgekehrt, der Vin wird von der Stromversorgung der Lüfter-Elektronik mit versorgt
22  International / Deutsch / Re: Ausgänge über .txt File von SD Card steuern on: April 17, 2014, 04:15:12 am
Quote
Geht das mit Analog Werten genauso schön
Noch viel schöner, ist aber schwieriger smiley-wink

Wenn in deiner Datei eine Zeile mit   "1.23" steht,  musst du mindestens fünf mal
      uint8_t read_byte = Text.read();
aufrufen und erhältst nacheinander die Zeichen '1', '.' .... und am Ende ein oder zwei Zeichen für das Zeilenende.

1.  vergiss den Dezimalpunkt.
2. die einfachste Dezimalzahlwandlung ( ohne Vorzeichen ) ist
Code:
   static unsigned int value  = value*10 + (read_byte - '0');  // hängt eine Ziffer an den bisherigen Wert an
3. Beim Zeilenende-Zeichen ist die Zahl fertig
4. Das gleiche Problem ( nur nicht von SD Karte ) gabe heut schon mal.

Wie du dann eine Sinus-Kurve darstellst, würde mich interessieren smiley-wink
23  International / Deutsch / Re: const static, static const, egal, oder falsch? on: April 17, 2014, 03:58:55 am
Wofür willst du die Konstante als static deklarieren?
Oder ist es eine static Variable ( die sich ändern kann und Speicherplatz für den aktuellen Wert braucht) ?
24  International / Deutsch / Re: Kurze MIDI -Sequenzen direkt im Sketch ohne SD-Karte abspeichern on: April 17, 2014, 03:54:13 am
Quote
Kann mir jmd. sagen, was es mit der Zeile 0x00, 0xff, nach der Tracklängenzeile auf sich hat?
google und Konsorten ?
25  International / Deutsch / Re: Fragen an die Profis (Tastatur Input Verabeitung und SD Log) on: April 17, 2014, 03:51:01 am
Wenn du bei "Enter" von der unbekannten Funktion genieGetEventData(&event); eine 13 zurückkriegst, ist die "Del/Back" Taste vermutlich nicht die 0. Aber das kriegst du ja über deine drei Serial.println(keyboard2) - Ausgaben raus.
Im Fall "Del/Back" solltest du nicht nur die '\0' auf index-1 schreiben, sondern auch den Index selbst verringern.

Ausserdem solltest du vor
       Serial.print(TXTdisp);
die Endekennung gesetzt haben:
Code:
       TXTdisp[TXTdisp_index++] = keyboard2;
       TXTdisp[TXTdisp_index] = '\0';
Dass du mit jedem Zeichen auf Serial und dem Display den kompletten Text (zur Zeit noch mit undefiniertem Schrott am Ende) ausgibst, weisst du ?
Das ist bei längeren Texten nicht so schön, aber einfach.

Quote
- Zahleneingaben checkt er gar nicht
Stimmt, Zahleneingaben checkst du gar nicht. Das sind Buchstaben wie alle anderen auch in deinem Kommentar-Text.
Was anderes sehe ich nicht.

Quote
Mir sind 2 Sachen allgmein nicht so ganz klar: In welcher  Form (Hex, ASCII usw) verabreitet man das am besten weiter. Wie handelt man Sondertasten am besten ab. Ich springe von DEC, HEX, ASCII,  hin und her...  Alles etwas konfus.

Ich rate mal aus deinen Zeilen ohne Variablen-Definition und Funktionsdeklaration, dass
Code:
genieGetEventData(&event);  Daten werden an Keyboard 2 übergeben
ein Zeichen zurückliefert, was in eine char Variable passt.
Das kannst du nach Geschmack mit println ausgeben, die Variable enthält immer den gleichen Wert.
Eine '7' ist eine '7' ist eine 0x37 ist eine 55 , eine Enter-Taste liefert (vermutlich) eine '\r' und eine 0x0d und eine 13, was alles dasselbe ist. Wie du das in deinem Code behandelst, ist egal, hauptsache es ist leicht nachzuvollziehen, was der Code soll.
Manche definieren Konstanten mit Namen ( oder #define ) um den Code selbsterklärend zu machen
Code:
#define ESC   0x1B
#define ENTER  0x0D
...
switch ( key ) {
  case ESC:
      handleEscapeKey();
      break;
  case '0':
  case '1':
  case '2': 
  case '3':
  case '4':
  case '5': 
  case '6':
  case '7': 
  case '8':
  case '9':
    handleNumericKey(key-'0');  // bearbeitet eine Zifferntaste, die als 0 .. 9  ( "binär" ) übergeben wird   
    break;
  case ENTER:
    processNumeric(value);  // value enthält eine Zahl aus den bisher eingegeben Ziffern
    value = 0;   // vorbereiten für eine neue Zahlen-Eingabe
    break;
}
Code:
unsigned long value;
//////////////// handleNumericKey( byte c)  ////////////    Dummy - Beispielfunktion
// c muss 0 .. 9 sein, das Gesamt-Ergebnis als Dezimalzahl wird in value gespeichert.
// Überlauf wird nicht geprüft, Neueingabe einer neuen Zahl wird nicht hier gesteuert
void handleNumericKey(byte c)

    value = value*10+c;
}
26  International / Deutsch / Re: Arduino Helligkeit und Dunkelheit erkennen lassen on: April 16, 2014, 04:03:51 pm
Falls Serenilfy dich auch verwirrt hat:
Mit "Status" meint er, ob der Motor schon gelaufen ist seit Beginn der Helligkeit.
Status wird also verändert : a) Wenn der Motor gelaufen ist, und b) Wenn es wieder dunkel ist

Wie lang soll der Motor denn laufen, ist die erste Frage.
Da gibt es grundsätzlich verschiedene Möglichkeiten.
Entweder: Motor einschalten, Warten ( delay ) , Motor ausschalten
Oder: Motor einschalten und Einschalt-Zeit merken. Wenn (aktuelleZeit -EinschaltZeit) > WunschDauer Ausschalten

Die Auswahl hängt davon ab, wie die komplizierteren Fragen gelöst werden wollen:
Was soll passieren, wenn es schon wieder dunkel wird, aber der Motor noch läuft ?
( Im delay Fall hast du gar keine Wahl, weil da der Sensor gar nicht erfasst wird während der Motor läuft. )

Vielleicht fallen dir noch mehr Sonderfälle ein, viel Spass.
27  International / Deutsch / Re: Hilfe bei IR-Codes senden… on: April 16, 2014, 03:22:32 pm
Quote
0x8048260C ist doch eine 32 Bit Zahl?
Ja, klar.
Wenn es aber eine 36 Bit Zahl sein soll, ist 0x8048260C vermutlich falsch.
Das würde auch erklären, dass
   irsend.sendRC6(0x8048260C, 36);
ein anderes Ergebnis liefert...

Oder andersrum:
irsend.sendRC6(0x8048260C, 36);
liefert
48A60C0
Decoded RC6: 48A60C0 (36 bits)
Dabei hat man beide Seiten voll unter Kontrolle, und somit die Chance rauszukriegen warum was anderes als erwartet rauskommt.
Dann kriegt man evtl auch raus, was man der sendRC6 Methode übergeben muss, damit das gleiche empfangen wird wie bei der Original-FB
28  International / Deutsch / Re: Webserver HTLM CODE on: April 16, 2014, 10:46:11 am
Ich seh keinen Unterschied in Bezug auf println / write.
Im ersten Teil hast du eine Zeile mehr:
 
Code:
  client.println("<div style=\"font-size:100%;   color:#0000FF; font-family:Verdana\">");

Wenn alles sonst gleich ist, sollte das erste beim Laufen ca. 60 byte mehr RAM brauchen.
( Und beim Compilieren  ~ 80 byte mehr Flash - Speicher )

29  International / Deutsch / Re: Wie ein LCD ansteuern ; LMC 1602 I2C ; Tutorial ; Sketch on: April 16, 2014, 10:28:43 am
Du definierst da ein Objekt namens lcd vom Typ LiquidCrystal_I2C.
Dieser Typ ist in der Library ( #include <LiquidCrystal_I2C.h> ) definiert.
Zum Erzeugen eines solchen Objekts gibst du ihm an, wie es per I2C adressiert wird ( 0x27 ) und wie die Verbindungen zwischen dem I2C-Device und dem eigentlichen Display sind.

Ob es andere Möglichkeiten gibt ( für fertige I2C-Display - Kombinationen ), müsstest du in LiquidCrystal_I2C.h nachlesen ...

Das lcd - Objekt kann bestimmte Sachen machen, die als Funktionen z.B.  so aufgerufen werden:  lcd.clear( ) ;
( welche Funktionen (auch Methoden genannt) das sind, und was für Parameter die brauchen, siehst du auch in   LiquidCrystal_I2C.h , nach der Zeile public:  )

30  International / Deutsch / Re: Arduino Helligkeit und Dunkelheit erkennen lassen on: April 16, 2014, 10:12:02 am
Wenn die Aufgabe heisst : "Wenn es dunkel ist, ... " nimm nen LDR und Widerstand als Spannungsteiler
Wenn die Aufgabe heisst:  "Nachts ... " nimm eine Uhr ( RTC , z.B. DS1307 ), die du aber auch stellen können musst.

Zum einfachen Testen ist LDR besser, da muss man nicht Stundenlang warten, sondern kann den Sensor abdecken,
im "echten Leben" wäre eine Uhr besser, die ist nicht so leicht durch einen abgedeckten Sensor zu stören.   

Quote
LDRs sind zwar sehr langsam, aber bei dieser Anwendung reicht das vollkommen.
LDR sind viel zu schnell: je nach dem wie geduldig du beim Testen bist, sollte es einige Minuten hell bzw. dunkel sein, damit du daraus Tag/Nacht ableitest.
Pages: 1 [2] 3 4 ... 184