Show Posts
Pages: 1 ... 84 85 [86] 87 88 ... 165
1276  International / Deutsch / Re: Arduino auf dem Mega8 on: July 31, 2013, 05:04:52 am
Die Konfig des Boards sieht so aus:
atmega8.bootloader.file=ATmegaBOOT-prod-firmware-2009-11-07.hex

Dieselbe Konfigurationszeile mit einer gleichnamigen Bootloaderdatei habe ich auch in meiner Boards.txt stehen, und zwar in der Konfiguration für ein mit 16 MHz getaktetes Board.

Das bedeutet: Es ist ein Bootloader für 16 MHz Systemtakt, und mit diesem Bootloader kannst Du nur Sketche auf das Board laden, wenn das Board tatsächlich mit 16 MHz läuft. Ein Bootloader kann immer nur bootloaden, wenn das Board auch mit demselben Systemtakt läuft, für das der Bootloader kompiliert wurde.

Entweder besorgst Du Dir einen Bootloader, der für ein mit 8 MHz getaktetes Board geeignet ist, zum Beispiel indem Du Dir einen solchen Bootloader selbst programmierst.

Oder Du vergißt die Sache mit dem Bootloader, und lädst Deine Sketche für ein Board, für das Du keinen passenden Bootloader hast, immer mit einem ICSP Programmer hoch, mit der Funktion "Upload mit Programmer". Da ein Atmega8 überhaupt nur 8KB Flashspeicher hat, schluckt ein Bootloader auf dem Baustein sowieso nur vollkommen unnötig wertvollen und knappen Speicherplatz weg.
1277  International / Deutsch / Re: Ersatz Fahrrad Computer durch Uno on: July 31, 2013, 03:53:56 am
Nee, daran liegt es nicht. Ich hab schon alles mögliche versucht. Ich kriege zwar eine zweistellige Anzeige hin, nur brauche ich aber eine dreistellige.

Dann nimm wieder das 16x2 Display, ein 8x2 Display ist dafür zu klein!

Für eine Anzeige großer Ziffern mit "printbigchar" brauchst Du immer 3 Zeichen Breite, das macht bei dreistelliger Anzeige:
printbigchar 3 Zeichen + 1 Zeichen Abstand + printbigchar 3 Zeichen + 1 Zeichen Abstand + printbigchar 3 Zeichen
= 11 Zeichen insgesamt
Da ist ein Display mit 8 Zeichen insgesamt zu wenig.

Selbst wenn Du sagst, Geschwindigkeiten unter 200 km/h reichen aus und Du würdest als 1 einen einfachen Strich von 1 Zeichen Breite nehmen, passt es immer noch nicht. Dann brauchst die dargestellte Ziffer "1" per printbigchar zwar 2 Zeichen weniger, macht also 9 statt 11 Zeichen insgesamt, aber 9 ist immer noch eins zuviel für ein Display mit 8 Zeichen in einer Zeile.
1278  International / Deutsch / Re: Variable Dateinamen für SD-Kartenzugriff on: July 30, 2013, 05:24:34 pm
Aber erstmal darauf zu kommen, ein Char-Array mit String-Zahlen anzulegen um dann mit den Int-Zahlen das richtige rauszupicken  ...

Das habe ich ja nur für die Zufallszahlenpickerei gemacht, um lauter zufällige Kombinationen aus einem vorgegebenen Kontingent auszuwählen. Du kannst die Funktion genau so gut mit char-Konstanten aufrufen:
Code:
void setup() {
  Serial.begin(9600);
}

void createFilename(char *str, char index1, char index2)
{
  sprintf(str,"%c%c.txt",index1,index2); 
}

void loop() {
  char filename[13];                  // Definiere Pufferspeicher für den Dateinamen
  createFilename(filename, 'x', '5');
  Serial.println(filename);  // Den gebildeten Dateinamen ausgeben
  createFilename(filename, 'h', '4');
  Serial.println(filename);  // Den gebildeten Dateinamen ausgeben
  createFilename(filename, 'a', '3');
  Serial.println(filename);  // Den gebildeten Dateinamen ausgeben
  createFilename(filename, 'Z', '9');
  Serial.println(filename);  // Den gebildeten Dateinamen ausgeben


Die gesamte "string/String/Char" Angelegenheit in C hab ich bisher gekonnt ignoriert, alles läuft auch mit Int, Float usw perfekt aber damit bekomm ich halt keine Dateinamen gebaut smiley-lol

Im wesentlichen ist ein "char" und ein "byte" in C dasselbe. Eine 8-Bit Variable, in der eine Zahl drin steht. Die Zahl ist der ASCII-Code des Zeichens.

Und ein char-Array ist im wesentlichen dasselbe wie ein Byte-array: Ein ASCII-Code nach dem anderen. Einziger Unterschied: Wenn man das char-Array als "String" interpretieren möchte, muss das letzte Zeichen im Array ein Nullzeichen sein. ASCII-0 erkennt das Stringende. Das ist notwendig, wenn man Stringverarbeitungs- und -ausgabefunktionen verwenden möchte.

Aber gleich noch nen anderes Problem hinterher:
Beim testen hatte ich in den Daten immer ein "  " dazwischen, gefunden hab ich das es wohl an der falschen Codierung der *.txt liegt. Welche ist denn die richtige für Arduino?

Dem Arduino ist die Codierung vollkommen egal, der arbeitet nur mit Bytes, und da ist ihm ein Byte genauso lieb wie ein anders. Ein Arduino hat keine Tastatur, er hat keinen Bildschirm. Also braucht der Arduino keine Codierung. Die Codierung brauchst eventuell DU, wenn Du Zeichen von einer SD-Karte liest und auf einem Bildschirm darstellen möchtest.

Zur Ausgabe auf dem in der Arduino-Software integrierten "Seriellen Monitor" wird wohl eine an ISO-8859 angelehnte Codetabelle verwendet, soweit es die Zeichen mit ASCII-Code über 127 betrifft.

Wenn Du Texte mit einem modernen Editor schreibst und als Datei abspeicherst, wird wohl oft UTF-8 als Zeichensatz verwendet. Aber das hängt natürlich ganz vom Betriebssystem und der verwendeten Software ab. "Genormt" sind nur die ASCII-Codes bis 127. Bei allen anderen Zeichen mußt Du selber wissen, wo sie herkommen und in welcher Codetabelle sie codiert sind, um zu wissen, welche Zeichen gemeint sind und wie Du sie ggf. umcodieren mußt auf eine andere Codetabelle. Z.B. von UTF-8 auf SD-Karte nach ISO-8859 im seriellen Monitor. Oder vielleicht auch gar nicht, z.B. wenn Du Daten in UTF-8 Code von SD-Karte per Netzwerk an einen Web-Browser sendest, der auch UTF-8 darstellen kann.
1279  International / Deutsch / Re: LED geht "von alleine" an, obwohl dies nicht gewünscht ist on: July 30, 2013, 04:35:17 pm
Kann also davon ausgegangen werden, dass die "Antennentheorie" zutrifft, wenn sich die LED beim bemerken eines fehlerhaften Einschaltens nach max. drei Minuten wieder "von alleine" ausschaltet?

Kann sein, kann auch nicht sein: Im Endeffekt kann ja innerhalb der drei Minuten schon wieder ein neuer Fehlimpuls am Taster-B Kabel auftreten, der die Ausschaltdauer nochmal um drei Minuten verlängert. Ich stell mir gerade mal vor: Irgendwo im Umkreis von einigen Metern hat jemand ein eingeschaltetes Bügeleisen, und der Bimetall-Temperaturregler schaltet die Heizwicklung alle zwei Minuten ein und aus und jedesmal gibt es eine Störung auf das "Antennenkabel" zum Taster B.

Anbei mal ein Codevorschlag von mir.

Braucht eine Library weniger.
Braucht trotzdem weniger Codezeilen als Dein Sketch.
Watchdog ist nicht drin. Wenn Code fehlerfrei läuft, läuft er auch ohne Watchdog.
Und ich habe noch zusätzlich ein "Lebendigkeitsblinken" mit der Board-LED an Pin-13 realisiert, bei dem die Board-LED immer schön regelmäßig blinken sollte, wenn der Sketch einwandfrei läuft. Wenn der Code zum Beispiel wegen logischer Fehler in einer Endlosschleife landet, bei der die loop nicht mehr ausgeführt wird, würde man das am Ausblieben des Blinkens erkennen können.

Aber wie gesagt, erstmal würde ich dem Taster-Anschluss mit dem 2,30m langen Kabel einen 4.7 KOhm Pullup-Widerstand verpassen (im Sketch dann auf INPUT initialisieren). Der mit dem kurzen Kabel angeschlossene Taster kann problemlos mit dem internen PullUp betrieben werden.

Mein Codevorschlag (ich hoffe, ich habe die merkwürdige Schaltlogik verstanden):
Code:
#define BUTTON_Z 2
#define BUTTON_C 3
#define LEUCHTDAUER_C 300000L
#define LEUCHTDAUER_Z 250000L
#define LEDPAUSE 340 // LED Pause beim Erneuern der Schaltzeit
#define SCHALTLED 4  // Zu schaltende LED
#define BLINKLED 13  // LED für das Kontrollblinken

enum ledStates{OFF, ON_BY_C, ON_BY_Z};

int ledState=OFF;


void setup() {
  Serial.begin(9600);
  pinMode(SCHALTLED,OUTPUT);
  pinMode(BLINKLED,OUTPUT);
  pinMode(BUTTON_C, INPUT_PULLUP);
  pinMode(BUTTON_Z, INPUT_PULLUP);
  Serial.println("Programm gestartet.");
}

boolean button_C_pressed()
// Abfrage Stauswechsel HIGH nach LOW von Button C
{
  static boolean lastState=HIGH;
  boolean state=digitalRead(BUTTON_C);
  if (lastState==HIGH && state==LOW) // Pegelwechsel von HIGH nach LOW
  {
    lastState=state;
    Serial.println("Button C");
    delay(50); // entprellen 50ms
    return true;
  }  
  lastState=state;
  return false;
}

boolean button_Z_pressed()
// Abfrage Stauswechsel HIGH nach LOW von Button Z
{
  static boolean lastState=HIGH;
  boolean state=digitalRead(BUTTON_Z);
  if (lastState==HIGH && state==LOW) // Pegelwechsel von HIGH nach LOW
  {
    lastState=state;
    Serial.println("Button Z");
    delay(50); // entprellen 50ms
    return true;
  }  
  lastState=state;
  return false;
}

void ledOneShortblink()
{
  Serial.println("Taster erneuert Zeitablauf");
  digitalWrite(SCHALTLED,LOW);
  delay(LEDPAUSE);
  digitalWrite(SCHALTLED,HIGH);
}

void kontrollblinken()
// Blinkt die LED alle 512ms ein und aus, beim ständigen Aufrufen aus der Loop
{
  digitalWrite(BLINKLED,(millis()/512)%2);
}


unsigned long handleCButton()
// Rückgabewert: Neue Leuchtdauer, sonst 0
{
    if (ledState==OFF)
    { // Einschalten mit Button C und neue Leuchtdauer setzen
      ledState=ON_BY_C;
      Serial.println("Eingeschaltet mit Taster C");
      return LEUCHTDAUER_C;
    }
    else if (ledState==ON_BY_C)
    { // Ausschalten nur wenn auch mit C eingeschaltet wurde
      ledState=OFF;
      Serial.println("Ausgeschaltet mit Taster C");
      return 0;
    }  
    else  // Sonst blinken und neue Leuchtdauer festlegen
    {
      ledOneShortblink();
      Serial.print("Neue Leuchtdauer gesetzt mit Taster C: ");
      Serial.println(LEUCHTDAUER_C/1000);
      return LEUCHTDAUER_C;
    }  
}

unsigned long handleZButton()
{
    if (ledState==OFF)
    { // Einschalten mit Button Z und neue Leuchtdauer setzen
      ledState=ON_BY_Z;
      Serial.println("Eingeschaltet mit Taster Z");
      return LEUCHTDAUER_Z;
    }
    else
    {
      ledOneShortblink(); // einmal kurz blinken
      Serial.print("Neue Leuchtdauer gesetzt mit Taster Z: ");
      Serial.println(LEUCHTDAUER_Z/1000);
      return LEUCHTDAUER_Z;
    }
}
  

void loop() {
  static unsigned long leuchtStart, leuchtDauer, neueLeuchtdauer;
  int lastLedState=ledState;

  if (button_C_pressed())             // Abfrage Taster C
    neueLeuchtdauer=handleCButton();  // Verarbeitung Taster C
  else if (button_Z_pressed())        // Abfrage Taster Z
    neueLeuchtdauer=handleZButton();  // Verarbeitung Taster Z
  else neueLeuchtdauer=0;          
  // Verarbeitung einer eventuell neuen Leuchtdauer
  if (neueLeuchtdauer>0)  // Es wurde eine neue Leuchtdauer gesetzt
  {  
    leuchtStart=millis();
    leuchtDauer=neueLeuchtdauer;
  }  
  // Ausschalten nach Zeitablauf
  if (millis()-leuchtStart > leuchtDauer)
  { // Leuchtdauer ist abgelaufen
    ledState=OFF;
    if (ledState!=lastLedState) Serial.println("Zeitablauf AUS");
  }
  /* AUSGABE DER ERGEBNISSE */
  digitalWrite(SCHALTLED, ledState); // hier und nur hier wird die LED geschaltet
  kontrollblinken();  // Hier blinkt die Board-LED als "Lebendigkeitsnachweis" für den Sketch
}
1280  International / Deutsch / Re: Variable Dateinamen für SD-Kartenzugriff on: July 30, 2013, 02:54:35 pm
...und noch vieles andere aber ich komme einfach nicht auf den richtigen Weg.
Erbarmt sich bitte wer?  smiley-kitty

Anbei eine Funktion zum Erzeugen von Dateinamen und ein Demosketch, der ganz viele Dateinamen nach dem Zufallsprinzip bildet.

Code:
void setup() {
  Serial.begin(9600);
}


void createFilename(char *str, char index1, char index2)
{
  sprintf(str,"%c%c.txt",index1,index2); 
}


void loop() {
  char kombi1[6]={'a','b','c','d','e','f'}; // Eine Auswahl von Buchstaben
  char kombi2[6]={'1','2','3','4','5','6'}; // Eine Auswahl von Ziffern
  char c1=kombi1[random(0,6)];   // Wähle einen Zufallsbuchstaben aus kombi1
  char c2=kombi2[random(0,6)];  // Wähle eine Zufallsziffer aus kombi2
  char filename[13];                  // Definiere Pufferspeicher für den Dateinamen
  createFilename(filename, c1, c2); // Funktionsaufruf zum Bilden des Dateinamens
  Serial.println(filename);  // Den gebildeten Dateinamen ausgeben


Die Funktion bildet den Dateinamen mit der "sprintf" Funktion aus der AVR libc.

Wenn Du damit schon Probleme hast, solltest Du Dich mal ausführlich informieren über
- Stringhandling in C/C++ mit C-Strings/Char-Arrays
- die verfügbaren Stringfunktionen der AVR libc: http://www.nongnu.org/avr-libc/user-manual/group__avr__string.html

Und um "String-Objekte", die es für mich völlig unbegreiflich teilweise sogar in einige "offizielle" Arduino Demo-Sketche geschafft haben, einen großen Bogen machen!
1281  International / Deutsch / Re: SSR relais mit pwm steuern on: July 30, 2013, 02:05:08 pm
Wie sieht denn sowas aus? Kannst du mir ein Programmbeispiel geben? (problem: delay darf nicht vorkommen)

Mal kurz was zusammengeschrieben.

Im Prinzip handelt es sich ja einfach um eine Blinkschaltung mit einer Zykluszeit von 10s, und das Taktverhältnis ist entweder 0 (dauernd aus), variabel zwischen 10% und 90% Einschaltzeit oder 100% (=volle Heizleistung). Dadurch ist der zeitliche Abstand zwischen zwei Schaltvorgängen niemals kleiner als 1 Sekunde, wodurch ein SSR Relais vernünftig schalten und eine geschaltete Heizung wirksam werden kann, und Du kannst die Heizung trotzdem ausgeschaltet haben, mit 10-90% variabel heizen oder voll eingeschaltet haben.

Der Testsketch fängt an mit 10% zu "heizen" (die Board LED einzuschalten), und steigert die "Heizleistung" (Taktverhältnis beim ein/aus) dann jede Minute.

Code:
// Zum Testen einfach die Board-LED schalten
#define HEIZPIN 13

void setup() {
  Serial.begin(9600);
  pinMode(HEIZPIN, OUTPUT);
}

boolean heizen(byte prozent)
// Parameter Prozent der Heizleistung 0 bis 100 (für 0% bis 100% Heizleistung)
// wobei <10 die Heizung komplett aus- und >90 komplett eingeschaltet ist
{
  static unsigned long letztesIntervallStart;
  unsigned long jetztMillis=millis();
  if (jetztMillis-letztesIntervallStart>10000) // alle 10s ein neues Intervall
    letztesIntervallStart=jetztMillis;
  if (prozent<10) // unter 10% Heizanforderung Heizung abschalten
  {
    digitalWrite(HEIZPIN, LOW);
    return LOW;
  }
  else if (prozent>90) // über 90% Heizanforderung Heizung voll einschalten
  {
    digitalWrite(HEIZPIN, HIGH);
    return HIGH;
  }
  else if (jetztMillis-letztesIntervallStart<100*prozent) // zwischen 10% und 90% des Intervalls heizen
  {
    digitalWrite(HEIZPIN, HIGH);
    return HIGH;
  }  
  else  // Rest des Intervalls Heizung aus
  {
    digitalWrite(HEIZPIN, LOW);
    return LOW;
  }  
}


byte heizLeistung;
void loop() {
  if (millis()<60000L)
    heizen(10);
  else if (millis()<120000L)
    heizen(20);
  else if (millis()<180000L)
    heizen(50);
  else if (millis()<240000L)
    heizen(70);
  else if (millis()<300000L)
    heizen(90);
  else
    heizen(100);
}
1282  International / Deutsch / Re: LED geht "von alleine" an, obwohl dies nicht gewünscht ist on: July 30, 2013, 12:52:49 pm
Prozessor - Taster B: Ca. 230cm

Bei dieser Kabellänge den Taster B mit dem internen PullUp zu beschalten ist einigermaßen fahrlässig. Die internen PullUp Widerstände sind sehr schwache PullUps in der Größenordnung von 20 bis 50 KOhm. Bei einer Antennenlänge von 2,30 m reichen schon elektrische Felder in der Nähe, um den Signalpegel auf der Leitung zum Schwabbeln zu bringen, sagen wir mal jemand schaltet zwei Meter daneben einen Staubsauger mit mangelhafter Funkentstörung ein oder aus.

Wie äußert sich denn die Fehlschaltung bei Dir? Das Licht geht nach 2-3 Tagen irgendwann an und überhaupt nicht mehr aus? Das wäre in jedem Fall ein Programmfehler. Auch bei erkannten Fehlschaltungen an Taster B, die durch elektrische Störungen wegen des schwachen internen PullUps an der langen Zuleitung verursacht werden, sollte das Licht ja nach Zeitablauf wieder ausschalten.

Also bei 2,3m Zuleitung zum Taster B würde ich schon eher einen PullUp von typischerweise 4,7 KOhm spendieren und nicht mehr den internen PullUp verwenden.

Wegen eines Programmbeispiels mache ich mir mal Gedanken. Vielleicht morgen.
1283  International / Deutsch / Re: SSR relais mit pwm steuern on: July 30, 2013, 08:30:28 am
ist es möglich ein SSR relais mit PWM zu steuern?

Wenn ich 50% PWM gebe das das relais 50% strom durchläst?

Nein.

PWM ist zum Ein- und Ausschalten für jede Art "Relais" viel zu schnell.

Aber weil Halbleiterrelais keinem Verschleiß an Kontakten oder Mechanik unterliegen, kannst Du beispielsweise Heizgeräte "getaktet" betreiben, wenn auch vieltausendfach langsamer als PWM.

Du kannst beispielsweise ein 10-Sekunden-Intervall nehmen und immer pro Intervall in Sekundenabständen schalten:
0 Sekunden eingeschaltet, 10 Sekunden ausgeschaltet ==> Heizung aus
1 Sekunde eingeschaltet, 9 Sekunden ausgeschaltet ==> 10% Heizleistung
2 Sekunden eingeschaltet, 8 Sekunden ausgeschaltet ==> 20% Heizleistung
...
5 Sekunden eingeschaltet, 5 Sekunden ausgeschaltet ==> 50% Heizleistung
...
8 Sekunden eingeschaltet, 2 Sekunden ausgeschaltet ==> 80% Heizleistung
9 Sekunden eingeschaltet, 1 Sekunden ausgeschaltet ==> 90% Heizleistung
10 Sekunden eingeschaltet, 0 Sekunden ausgeschaltet ==> 100% Heizleistung

Das ist mit Halbleiterrelais problemlos möglich.
Dazu brauchst Du Dir nur eine geeignete Taktungsfunktion zu basteln. Und dann könntest Du Heizgeräte recht einfach in 10% oder 1% Schritten über eine Taktung mit einer Mindestschaltzeit von z.B. 1 Sekunde steuern, also zwischen 10% und 100% geregelt.
1284  International / Deutsch / Re: LED geht "von alleine" an, obwohl dies nicht gewünscht ist on: July 30, 2013, 08:05:54 am
Per Taster A und B soll eine LED "x" Minuten eingeschaltet werden können.

Ein Druck auf Taster B verlängert die Leuchtdauer der LED um X Minuten, wenn das Licht von Taster A eingeschaltet wurde (LED geht kurz aus und bleibt im Anschluss daran an).

Ein weiterer Druck auf Taster A, während Licht von Taster A eingeschaltet wurde, schaltet die LED aus.

So verstehe ich das:

Taster A ist ein manueller Einschalter für eine LED
Taster B ist ein manueller Einschalter für dieselbe LED
Nur Taster A kann als Ausschalter für die LED dienen, aber nur, falls das Einschalten ebenfalls durch Taster A erfolgte
Die Ausschaltung erfolgt ohne Betätigung eines Tasters auch nach einem Zeitablauf, und zwar je nachdem, über welchen Taster die LED eingeschaltet wurde:
Taster A ==> Ausschalten nach Zeitdauer A
Taster B ==> Ausschalten nach Zeitdauer B
Taster B kann nach dem Einschalten die Einschaltdauer noch verändern, und zwar wenn bei eingeschalteter LED der Taster B betätigt wird, fängt die Zeitdauer B neu an zu laufen, nach der die LED abgeschaltet wird

Rückfrage 1:
Habe ich das so richtig verstanden?

Über sachdienliche Hinweise bin ich also sehr dankbar.

Dein Code ist viel zu unübersichtlich und zu lang und kaum gegliedert (z.B. in kurze, übersichtliche Funktionen).

EVA-Prinzip nicht beachtet: Keine Trennung von Eingabe-Verarbeitung-Ausgabe in Deinem Code erkennbar, alles ist spaghettimäßig miteinander verknüpft.

Ein Watchdog-Reset ist völlig ungeeignet, um fehlerhaft programmierte Programme zum Funktionieren zu bringen.

Rückfrage 2:
Ist Deine Schaltung auf einen Breadboard mit ausschließlich kurzen Leitungen (max. 20 cm zu den Tastern und LEDs) aufgebaut oder hast Du womöglich irgendwo lange Leitungen verlegt und Fehlfunktionen können möglicherweise nicht nur durch die Software, sondern auch durch aufgefangene Überspannungsimpulse auf den langen Leitungen verursacht sein?
1285  International / Deutsch / Re: Ersatz Fahrrad Computer durch Uno on: July 30, 2013, 07:38:06 am
Wie bekomme ich die große Schrift auf einem 8x2 Display unter? Paßt natürlich so nicht. Und ich weiß nicht wo ich den Code so abändern kann das nur drei Zahlen dargestellt werden.

Das ist jetzt aber die Wärme, oder?

Du brauchst nur die Display-Initialisierung auf das 8x2 Display anpassen und dann mußt Du eben die Ausgabe so kurz halten, dass nicht hinter das achte Zeichen geschrieben wird. Z.B. eine Anzeige nur mit dreistelliger Geschwindigkeit, ohne Nachkommastellen, linksbündig:
Code:
void tachoAnzeige()
{
  byte umdrehungen;
  unsigned long zeit;
  float kph, kilometer;
  int kphRounded;
  char buffer[10];
  noInterrupts();            // Interrupts sperren
    umdrehungen=reedCountSum;// Zählvariable umkopieren
    reedCountSum=0;          // Zählvariable auf 0 zurücksetzen
    zeit=reedMillisSum;      // Zeitzähler umkopieren
    reedMillisSum=0;         // Zeitzähler auf 0 zurücksetzen
  interrupts();              // Interrupts wieder zulassen
  if (umdrehungen>0)
    kph=float(RADUMFANG)*(float)umdrehungen/(float)zeit*3.6;
  else
    kph=0.0; 
  kphRounded=int(kph+0.5); // auf ganze kph gerundet
   
  kphRounded = kphRounded % 1000;       // drop any digits above 999
  printbigchar(kphRounded / 100,0);     // print the speed hundreds
  kphRounded = kphRounded % 100;        // drop any digits above 99
  printbigchar(kphRounded/10,1);        // print the speed tens
  kphRounded = kphRounded % 10;         // drop any digits above 9
  printbigchar(kphRounded,2);           // print the speed ones
}
1286  International / Deutsch / Re: arduino 2560 and ethernet shield on: July 29, 2013, 12:26:53 pm
Nur bei dem MEGA weiterhin die bereits erwähnten Zicken smiley-mad
Auch mit...?

Und was ist, wenn Du nochmal mit der SPI-Geschwindigkeit runtergehst auf:

 if (!card.init(SPI_QUARTER_SPEED, chipSelect))

???
1287  International / Deutsch / Re: Relais-Problem (SaintSmart) mit 3-Wege-Ventil on: July 29, 2013, 12:19:02 pm
Ich habe auch manchmal das erwähnte Phänomen, dass beim Neustart des Arduino die Relaiskarte (Relais des anlaufenden 3-W-Ventils) aufflackert und erst beim 2. oder 3. Mal anbleibt.

Bist Du sicher, dass Du in Deinem Sketch nicht einfach nur eine falsche Initialisierung für ein "active low" schaltendes Relais drin hast?

Das "flackern" eines Relais beim Programmstart hört sich für mich verdächtig nach Programmfehler an.

Hier habe ich zuletzt erst vor wenigen Tagen erklärt, wie active low schaltende Relais richtig initialisiert werden, damit nichts flackert:
http://forum.arduino.cc/index.php?topic=178323.msg1322199#msg1322199
1288  International / Deutsch / Re: RF Remote mit Arduino steuern bzw. brücken // Probleme mit ULN2003 on: July 29, 2013, 10:17:37 am
Ich habe mir eines dieser günstigen RF-Module aus China besorgt (http://www.ebay.de/itm/300908827201?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649) um diverse Verbraucher mit Arduino fernsteuern zu können. Mir ist bewusst dass diese RF Transmitter und Receiver auch alleine erhältlich sind, bei dem Preis für das fertige Modul mitsamt fertiger Codierung etc. ist mir aber dieser Weg deutlich lieber.

Ist Dir auch bewußt, dass 315 MHz nur in den USA eine frei nutzbare ISM-Frequenz ist und in Deutschland ist das laut Frequenznutzungsplan der Bundesnetzagentur eine Frequenz reserviert für "Militärische Funkanwendungen"?

Die private Nutzung von 315 MHz für private Funkanwendungen ist in der gesamten EU illegal.
Die legal nutzbare Frequenz für Short Range Devices in der EU ist 433 MHz.
1289  International / Deutsch / Re: Anfänger, bekomme Duemila nicht zum laufen on: July 29, 2013, 05:16:31 am
jurs, Wenn das aber beidemale das selbe Kit, ist dann müßte der zweite "Arduino" ohne Treiberinstallation auf dem Computer des Sohnes funktionieren.

Korrekt, wenn es zweimal das gleiche Board ist und das eine ist auf dem PC mit installierten Treibern bereits gelaufen, dann müßte das zweite Board nach dem Umstecken auf demselben PC genau so laufen.

Im Zweifelsfall mal den Controller und die Fassung auf dem Board genau betrachten: Ich glaube, dass bei den Franzis-Boards schon mal Mängel in der Endkontrolle vorgekommen sind, also dass zum Beispiel schon mal bei einem Controller ein Beinchen abgeknickt neben der Fassung steckte oder der Controller nicht richtig bis zum Anschlag in die Fassung eingedrückt war.
1290  International / Deutsch / Re: Bekomme NTP nicht zum laufen, benötige Hilfe on: July 29, 2013, 03:16:23 am
Wenn ich den aber kompiliere, gibt es immer wieder Fehlermeldungen. Woran liegt das und wie bekomme ich das gelöst?

Ich habe hier auch schon eine Sommerzeit-Funktion gepostet, gekapselt als Funktion mit genau definierten Übergabeparametern, die Du an die Funktion übergeben müßtest und dann einen boolean-Wert "true" oder "false" zurückbekommst:
http://forum.arduino.cc/index.php?topic=172044.msg1278536#msg1278536
Pages: 1 ... 84 85 [86] 87 88 ... 165