Show Posts
Pages: [1] 2 3 ... 192
1  International / Deutsch / Re: Datum von gestern ohne Libary berechnen on: Today at 11:07:47 am
Da sieht der Algorithmus mit dem Julianischen Datum auf Wikipedia deutlich einfacher aus. Scheinbar bin ich aber zu blöd den dort gezeigten Pseudocode in Arduino-Code umzuwandeln. Mein Julianisches Datum stimmt nämlich hinten und vorne nicht.

Der Wikipedia-Pseudocode läßt sich supereinfach in C-Code umsetzen.
Leider scheint das Ergebnis nicht ganz genau zu sein.
Für verschiedene Tage zwischen 1990 und 2014 habe ich getestet, der Wikipedia-Code bekommt zwei Tage zuviel heraus.

Falsch rechnender Code nach Wikipedia:
Code:
long julianDay_wrong(int Jahr, int Monat, int Tag)
{
  float y = Jahr + (Monat - 2.85)/12;
  float A  = (long)(367 * y) - 1.75 * (long)(y) + Tag;
  float B  = (long)(A) - 0.75 * (long)(y / 100);
  return (long)(B) + 1721117;
}
Wenn man sich darauf verlassen könnte, dass stets zwei Tage zuviel herauskommen, könnte man auch damit arbeiten. Allein, mir fehlt das rechte Vertrauen.

Hier ist eine andere Möglichkeit zum errechnen der julianischen Tageszahl, bei der das richtige Ergebnis herauskommt:

Code:
long julianDay(int Jahr, int Monat, int Tag)
{
  Jahr+=8000;
  if(Monat<3) { Jahr--; Monat+=12; }
  return (Jahr*365L) +(Jahr/4) -(Jahr/100) +(Jahr/400) -1200820 +(Monat*153+3)/5-92 +Tag-1;
}

Ein Rechenschema zum zurückrechnen des Kalenderdatums aus der Julianischen Tageszahl kennt Wikipedia auch:
http://de.wikipedia.org/wiki/Julianisches_Datum#Berechnung_des_Kalenderdatums_aus_dem_julianischen_Datum
Ob dieser Algorithmus besser ist?
Bekommst Du das selber hin?
2  International / Deutsch / Re: Stromsparmodus Arduino Nano on: Today at 09:03:56 am
okay vielen danke smiley

Wenn Du ein fertiges Board bevorzugst: Das "Mini-05" Board wird immer noch gelegentlich mal angeboten, z,B, hier:
http://www.exp-tech.de/Mainboards/Arduino-Mini-05-with-pin-headers.html

Weil an diesem Board alle stromfressenden Komponenten wie "Power-On LED" und "Serial-USB Adapter" standardmäßig weggelassen wurden, eignet es sich sehr gut für batteriebetriebene Projekte.

Programmieren kannst Du das Board, indem Du entweder die ISP-Pins entsprechend für einen ISP-Programmer oder einen "Arduino as ISP" anschließt, oder indem Du zum Programmieren einen externen USB-Serial-Adapter anschließt, den Du nach dem Programmieren des Boards wieder entfernst.

Die moderneren "Pro Mini" Boards haben leider eine PowerOn-LED, aber es gibt Bastelanleitungen im Internet, wie Du beim Pro Mini die stromfressende LED durch Durchtrennen einer Leiterbahn außer Gefecht setzen kannst.
3  International / Deutsch / Re: Datum von gestern ohne Libary berechnen on: Today at 07:40:02 am
Für mein aktuelles Projekt benötige ich das Datum von gestern. Die Uhrzeit und das Datum lese ich von einer RTC (DS1307) direkt aus. Also ohne irgendeine Libary. Wie kann ich also aus dem aktuellen Datum das Datum von gestern oder vor einer Woche OHNE eine Libary berechnen?

Mit zwei Funktionen. Eine Funktion, die Dir das Datum von heute in eine fortlaufende Tageszahl umwandelt. Von der Zahl ziehst Du dann 1 ab. Und dann brauchst Du noch eine gegensätzliche Funktion, die Dir die Tageszahl wieder in das Datum zurückverwandelt.

Pseudocode für die erste der beiden Funktionen findest Du sogar bei Wikipedia:
http://de.wikipedia.org/wiki/Julianisches_Datum#Chronologisches_julianisches_Datum
4  International / Deutsch / Re: Stromsparmodus Arduino Nano on: Today at 07:30:57 am
blinken tut mal nix smiley-grin

Hat das Nano-Board keine Board-LED an Pin-13?
Funktioniert der normale "Blink-Sketch" mit Blinken an der Pin-13 LED auf Deinem Board?

Ich merke eine veränderung druch drücken von 55mA zu 39mA

Das dürfte der Energiesparmodus sein. Ein Atmega328 mit 16 MHz getaktet braucht ca. 17 mA. Im Powerdown-Modus braucht er weit unter 1 mA, Also sollte der Stromverbrauch eines Boards mit 55 mA Verbrauch, bei dem Du den Atmega328 in Powerdown versetzt, ungefähr 55-17 = 38 mA verbrauchen.

Das kommt mit Deinem Messwert ja extrem gut hin.
5  International / Deutsch / Re: Stromsparmodus Arduino Nano on: Today at 07:09:43 am
ich bekomme es einfach nicht hin den Nano in den Energiesparmodus zu versetzen. Ich messe immerwieder 50-55mA

Messen tue ich in dem ich ein Amperemeter in Reihe schalte zwischen 9v + und vin

Ich habe es versucht mit verschieden Lib

Ich habe Dir mal einen Beispielcode gemacht, der den Sleepmode beendet, wenn an einem Atmega328 der Pegel an Pin-2 wechselt (Interrupt 0, CHANGE) .

Wenn der Controller wach ist, sendet er je nach Status von Pin-2 eine unterschiedliche Blinkfolge auf der Board LED-13

Testschaltung:
Taster zwischen GND und Pin-2 (Pin wird im Programm auf pinMode INPUT_PULLUP gesetzt)
Code:
#include <avr/sleep.h>

#define WAKEPIN 2
#define WAKEINTERRUPT 0
#define BOARDLED 13

volatile byte isWake =1; // Statusflag zeigt, ob der Controller wach ist

void goToSleep()
{
  sleep_enable();
  noInterrupts();
  attachInterrupt(WAKEINTERRUPT, wakeUp, CHANGE);
  isWake=0;
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  interrupts();
  sleep_cpu();  // hier geht der Controller in den Sleepmode
  sleep_disable();  // und ab hier ist er nach einem Interrupt-0 wieder wach
  detachInterrupt(WAKEINTERRUPT);
}

void wakeUp()
{
  isWake=1;
}


void setup()
{
  pinMode(WAKEPIN,INPUT_PULLUP);
  pinMode(BOARDLED,OUTPUT);
//  goToSleep();  // Kommentarstriche entfernen, falls anfangs schlafend
}

void blink(int num, long duration)
{
  for(int i=0;i<num;i++)
  {
    digitalWrite(BOARDLED,(i+1)%2);
    delay(duration);
  }
}

void loop()
{
  if (isWake)
  {
    if (digitalRead(WAKEPIN)==LOW) blink(8,250);
    else blink(4,500);
    goToSleep();
  }
}

Wie verändert sich denn damit die Stromaufnahme, während der Controller schläft?
6  International / Deutsch / Re: MQ135 Air Quality Sensor inkl. Breakout bord verwenden? on: Today at 05:51:21 am
das Auslesen des Sensors :-)

OMG!

Einen Analogeingang liest Du mit der "analogRead()" Funktion und bekommst einen Wert zwischen 0 und 1023.

Einen Digitaleingang liest Du mit "digitalRead()".

Beispielcode mit Ausgabe auf Serial, AO-Sensor an A0-Arduino und DO-Sensor an Pin-2 Arduino:
Code:
#define ANALOGEINGANG A0
#define DIGITALEINGANG 2

int sensorValue;
boolean gasAlarm;

void setup()
{
 Serial.begin(9600);      // sets the serial port to 9600
}

void loop()
{
 sensorValue = analogRead(ANALOGEINGANG);
 gasAlarm= digitalRead(DIGITALEINGANG);
 Serial.print(sensorValue);
 Serial.print('\t');
 if (gasAlarm) Serial.print("ALARM");
 Serial.println();
 delay(1000);
}

Die Alarmschwelle stellst Du mit dem Trimmerpoti auf der Sensorplatine ein.

Ob die Alarmbedingung in meinem Sketch so richtig geraten ist, dass "1" für "Alarm" steht und "0" für "kein Alarm", müßtest Du ausprobieren und falls ich falsch geraten habe müßte die Alarmbedingung negiert werden.
7  International / Deutsch / Re: Direct Port manipulation funktion für den DUE on: Today at 05:05:49 am
Wie sieht es denn mit Analog read und Write aus? Hat da jemand vorschläge? smiley-grin

Die Arduino Core Library ist für alle unterstützten Plattformen "Open Source", einschließlich der SAM3X-Plattform und wird jeweils mitgeliefert. Da brauchst Du nur reinzuschauen, wie die Arduino-Komfortfunktionen es mit der direkten Hardwareprogrammierung machen, wenn Du Anregungen suchst.
8  International / Deutsch / Re: MQ135 Air Quality Sensor inkl. Breakout bord verwenden? on: Today at 04:49:48 am
hat von euch schon mal jemand mit dem Sensor gearbeitet und kann mir erklären wie er funktioniert ?

Nö, noch nie mit dem Sensor gearbeitet.

Aber da brauchst Du doch nur raufschauen und weißt, wie er am Arduino funktioniert.

Dein Sensor hat vier Anschlüsse:
G - Ground - Arduino GND
AO - Analog Out - Arduino Analog-Pin
DO - Digital Out - Arduino Digital-Pin
V - Voltage - Arduino 5V

Was'n daran nicht zu verstehen?
9  International / Deutsch / Re: Arduino Shield Verbindung bricht ab. on: July 26, 2014, 10:54:23 am
Leider habe ich immer noch das gleiche Problem.

Für weitere Tipps wäre ich euch sehr dankbar!

Warum startest Du eigentlich eine Denial-of-Service Attacke gegen den Server, wenn eine Verbindung nicht zustande kommt?

Wenn eine Verbindung nicht zustande kommt, dann ist oftmals eine Überlastung des Servers die Ursache dafür. Falls das vorkommt, wäre die korrekte Reaktion eines anständigen Servernutzers, die Anfragehäufigkeit an den Server zu reduzieren und so zur Entlastung des Servers beizutragen.

Du machst genau das Gegenteil: Wenn die Verbindung nicht zustande kommt, startest Du eine Höchstgeschwindigkeitsattacke und flutest den Server verzögerungsfrei mit immer neuen Anfragen, so schnell der Arduino es nur kann.

Halt nein, nicht ganz so schnell wie es möglich ist, denn Du machst ja noch ein   Serial.println("connection failed, err: "); bei 9600 Baud, also 25 gesendete Zeichen bei 1 Zeichen pro Millisekunde, was einem delay von 25 Millisekunden zwischen zwei Anfragen entspricht.

Solche Angriffe auf einen Server werden normalerweise mit dem virtuell gezeigten Mittelfinger bestraft.

Überhaupt Deine Abfragerate im Normalbetrieb: Im Normalbetrieb sendet Dein Arduino eine Anfrage pro Sekunde, also 86400 pro Tag an den Server.

Ist das Dein eigener Server oder bist Du aus anderen Gründen sicher, dass Du so ohne weiteres zigtausend Anfragen an den Server pro Tag senden darfst, ohne dass Du wegen übermäßiger Nutzung von Serverressourcen wenigstens zeitweise geblockt wirst?
10  International / Deutsch / Re: Network Shield funktioniert nicht. on: July 26, 2014, 08:45:29 am
Allerdings weiß ich nicht wie es dazu kam. Beim Shield aufstecken kann man ja eigentlich nichts falsch machen alle Pins waren da wo sie hingehören.

Bei den Boards mit der fetten USB-Buchse (UNO, MEGA) kannst Du beim Aufstecken des Shields ganz einfach einen Kurzschluss bauen. Die USB-Buchse ist metallisch blank und steht hoch auf, und die Unterseite des Shields hat direkt darüber die Ethernet-Buchse sitzen mit den Lötanschlüssen auf der Platinenunterseite.

Wenn das Shield schräge aufgesetzt wird ==> Kurzschluss zwischen Shield-Unterseite und USB-Buchse
Wenn die Header-Stifte etwas zu kurz sind ==> Kurzschluss zwischen Shield-Unterseite und USB-Buchse

Daher immer: Board und Shield stromlos machen, zusammenstecken, auf Sicht kontrollieren, dass auch wirklich ein Luftabstand zwischen Shield und USB-Buchse vorhanden ist, dann erst Strom draufgeben und sicherstellen, dass sich daran auch nichts ändert.

Sicherheitshalber: Ein Stückchen isolierendes Klebeband auf die USB-Buchse des Boards kleben.
11  International / Deutsch / Re: I love You Arduino on: July 26, 2014, 05:54:04 am
schaut mal was ich gerade gesehen habe, .... ich finde es interessant was sich manch einer mit unserem Liebling so anstellt ;-)

Die elektronisch fernsteuerbare Freundin?
Da war doch mal was, die wurde bereits 1987 in einem Hollywood B-Movie erfunden und hieß Cherry 2000:
http://www.youtube.com/results?search_query=cherry+2000+shorted+out

Die Cherry 2000 hatte allerdings schon eine moderne Sprachsteuerung und wurde nicht umständlich per App gesteuert.

Neu ist allerdings die Idee, dass man gar keinen vollkybernetischen Liebesroboter bauen muß, sondern dass man einfach eine bereits vorhandene Blondine mit etwas Elektronik aufbrezeln kann.

Auf Ideen kommen die Leute, ts, ts, ts.

Aber Vorsicht: Kurzschlußgefahr!
 smiley-twist
12  International / Deutsch / Re: Arduino / pinMode on: July 26, 2014, 03:37:09 am
Wenn der Taster betätigt wird soll die Last für eine Zeit X vom Arduino gehalten werden.
Der knackpunkt ist ...... Galvanisch getrennt und über einen Pin.

Oh, oh. Das mit dem "nur über einen Pin" ist so gar nicht typisch für Mikrocontrollerschaltungen.

Denn Deine "Selbsthaltung", die Du mit dem Schalter programmieren möchtest, kann dann hinterher nicht mehr mit demselben Schalter wieder aufgehoben/ausgeschaltet werden. Das kann dann bei Deinem Vorhaben nur noch der Mikrocontroller von sich aus machen.

Vom Prinzip her müßte es aber ungefähr so möglich sein, wie Du es Dir vorstellst: Mit zwei Optokopplern.
Eine fertige Schaltung habe ich nicht für Dich, aber einige Anregungen. Im folgenden bezeichne ich den mit dem Schalter betätigten Optokoppler mal 24V-Optokoppler und den vom Mikrocontroller betätigten nenne ich 5V-Optokoppler.

1. Da ein Optokoppler mit 24V und der andere mit 5V geschaltet wird, müßtest Du bei der Berechnung des Vorwiderstands eigentlich zwei verschiedene Widerstandswerte herausbekommen, so dass es an einer korrekt berechneten Schaltung nicht sein kann, dass sowohl am 24V Optokoppler als auch am 5V Optokoppler ein 2K Widerstand verwendet wird.

2. Optokoppler können am Ausgang ein "Signal" abgeben, aber keine großen Leistungen schalten. Der 24V-Optokoppler kann dann zwar problemlos dem Mikrocontroller ein Signal senden, dass der Schalter betätigt wurde, aber mit dem 5V-Optokoppler kannst Du vermutlich nicht direkt den notwendigen Laststrom halten/schalten. Ich nehme mal an, Deine "Last" soll irgendwie ein Relais sein, dann würde der 5V-Optokoppler am Ausgang noch eine Transistorschaltstufe benötigen, um den Laststrom (= Relais-Spulenstrom) zu schalten.

3. Im Schaltbild fällt mir auf, dass Du an den Optokopplerausgängen mal Plus oben und Minus unten und mal umgekehrt angeschlossen hast. Das ist an den meisten existierenden Optokopplern nicht erlaubt, sondern je nach Typ des Optokopplers muss der Ausgang richtig gepolt am Optokoppler angeschlossen sein. Nur bei ganz wenigen bipolaren Optokopplern ist es egal, wie herum die Polung am Ausgang angeschlossen ist.

Soweit meine Ideen dazu.
13  International / Deutsch / Re: Arduino / pinMode on: July 25, 2014, 02:02:23 pm
nu kommt schon .... so schlecht ist das Schaltbild nu auch wider nicht. Unten der Blaue Rahmen Representirt den Arduino Pin wo die PullUp and Down Widerstände zugeschaltet werden können.

Ein Arduino hat zwar einen schaltbaren eingebauten PullUp-Widerstand.

Aber es gibt keinen schaltbaren PullDown-Widerstand.
PullDown-Widerstände können nur "extern" fest verbaut werden.
Ein mit pinMode INPUT geschalteter Eingang ist immer "schwebend", d.h. dieser Eingang kann wahlweise zwischen HIGH und LOW hin und her pegeln, je nachdem, welche zufälligen Störungen er auffängt.

Ich möchte den Pin des Arduino in beiden Richtungen Galvanisch trennen. Das ist der Kern der Bemühung. Aber ich denke ich habe da ein grundsätzliches Verständniss Problem.

Aber was soll das werden, wo soll geschaltet werden und wo sollen Signale ankommen?

Möchtest Du die "Last" manuell am "Schalter" ein und aus schalten und der Arduino soll ein Signal am Eingang erhalten, ob die Last ein- oder ausgeschaltet ist?

Oder möchtest Du mit einen "Schalter" einen Arduino-Eingang HIGH/LOW setzen und der Arduino soll daraufhin eine "Last" schalten?
14  International / Deutsch / Re: Arduino / pinMode on: July 25, 2014, 01:20:04 pm
die Karte baue ich gerade und teste die Technischen Möglichkeiten.

Was soll das werden, wenn es fertig ist?

Ich sehe da einen "Taster" an Minus und eine "Last" an Plus.
Wenn der "Taster" geschlossen ist, ist die "Last" eingeschaltet.
Wenn der "Taster" offen ist, ist die "Last" ausgeschaltet.

Alles weitere in der Schaltung sieht mir nach reinem Tinnef ohne Funktion aus.

Wo soll der Arduino mit seinem Input angeschlossen sein, der ist nirgends im Schaltbild zu sehen?! Ich vermute mal, unten das grüne offene Ende zwischen den beiden 10 K Widerständen soll zum Arduino Eingang führen? Aber was möchtest Du bezwecken?
15  International / Deutsch / Re: Arduino / pinMode on: July 25, 2014, 09:10:22 am
für eine Erweiterungs Karte muss ich die Pins mithilfe von `PinMode` im `Void Loop` ändern.

Bei welcher Erweiterungskarte?

Aber egal was ich versuche. Der Arduino weigert sich hartnäckig.

Nein, ein Arduino-Board ist kein Revoluzzer mit Verweigerungshaltung.

Ich habe den Verdacht das PinMode im VoidLoop garnicht funktioniert.

Falsch.

gibt es da einen Trick?

Nein. Höchstens wenn Du den pinMode extrem schnell umschalten müßtest, oder der pinMode an mehreren Pins eines Portregisters in genau derselben Nanosekunde gleichzeitig statt nacheinander geändert werden soll, könnte man anstelle von pinMode direkt die Register des Controllers programmieren, falls Du das als "Trick" bezeichnen möchtest.
Pages: [1] 2 3 ... 192