Show Posts
Pages: 1 ... 63 64 [65] 66 67 ... 95
961  International / Deutsch / Re: Projektvorstellung: Arduino Wake on LAN Server on: June 24, 2012, 06:43:53 am
Na vielen Dank für das Lob :-)
Ursprünglich sollte es eigentlich eine kleine Weboberfläche mit Daten auf der SD-Card geben, aber da der Kollege aus dem Netzwerkbereich kommt und viel mit Ciscogeräten arbeitet, hab ich ihm eine Oberfläche gebaut die er kennt :-)

Verwendet wird der Arduino im Übrigen mit einem Netzteilschalter, der per Telefon gesteuert wird. Wenn man jetzt z.b. dem Arduino noch ein GSM-Shield verpasst, könnte man das Ganze sogar per SMS steuern. Hier sogar dann mit frei definierbaren MAC-Adressen die per SMS geschickt werden.
962  International / Deutsch / Re: POE vom Ethernet-Shield funktioniert nicht? on: June 23, 2012, 09:00:05 am
Ist der Switch an dem Das Shield hängt denn POE-fähig? Ist der POE-Adapter auf dem Shield drauf?
Das Ethernet-Shield ist nicht von Hause aus POE-fähig und die Gegenstelle muss das auch können.
963  International / Deutsch / Projektvorstellung: Arduino Wake on LAN Server on: June 23, 2012, 07:55:49 am
Hallo,

ich habe vor kurzem für einen Arbeitskollegen einen Wake-on-LAN Server auf Basis des Ardino Ethernet (Ethernet Shield sollte auch funktionieren) programmiert.
Gebaut wäre übertrieben, denn das einzige was die Hardware betrifft ist eine Verbindung von Masse zu Pin 3, um den Server auf die "Werkseinstellungen" zu setzen.

Der Server ist per telnet konfigurierbar und kann 8 verschiedene MAC-Adressen speichern, an die er beim Einschalten WoL-Pakete schickt, um verschiedene Netzwerkgeräte bzw. Rechner einzuschalten.

Der Sketch hängt an, evtl. kann sich der eine oder andere etwas für ein eigenes Ethernet-Projekt abschauen. Ich habe mich bemüht, den Sketch umfänglich zu dokumentieren. Allerdings in Englisch.

Mario.
964  International / Deutsch / Re: Ausgang per Uhrzeit/Datum schalten on: June 23, 2012, 05:52:10 am
Ich habe gerade mal ein wenig über eine mögliche Datenstruktur nachgedacht, die möglichst platzsparend ist.
Ich denke mit 4 Bytes, oder genauer 64 Bit, sollte man hinkommen.

Damit kann man mit einem solchen Datensatz die Information "schalte PIN x jeden Montag um 15:35 für 10 Minuten auf HIGH" oder "schalte PIN 5 täglich alle 2 Stunden für 5 Minuten auf LOW" übertragen und speichern.


Bytes  | 1. Byte | 2. Byte | 3. Byte| 4. Byte |
       |___|_____|______|__|________|_____|___|
Bits   | 3 |  5  |   6  | 2 + 8 = 10|  5  | 3 |

  • Byte 1 : codiert den Wochentag (3 Bit / 8 Werte) 1=Mo bis 7=So; 0=täglich (Sonderfall)
  • Byte 1 : codiert die Stunde (5 Bit / 32 Werte) 0-23 "normale Stunde", 24-31 = Sonderfälle (z.b. stündlich, alle 2 Stunden, ... etc.)
  • Byte 2 : codiert die Minuten (6 Bit / 64 Werte) 0-59 "normale Minute", Rest 60-63 wieder mögliche Sonderfälle
  • Byte 2 + 3 : codiert die Schaltdauer in Minuten (2 Bit von Byte 2 + 8 Bit Byte 3 / 1024 Werte
  • Byte 4 : codiert den zu schaltenden Pin ( 5 Bit / 32 Werte) 0= Pin 0, 1=Pin1 ...
  • Byte 4 : codiert zusätzliche Informationen ( 3 Bit / 8 Werte) z.B. 0 -> Pin=HIGH während Schaltdauer, 1 -> Pin=LOW während Schaltdauer, etc.
Der RTC Chip hat 56 Bytes an nicht flüchtigem Speicher, damit könnte man 14 solcher Datenpakete unterbringen. Zusätzlich kann man deutlich mehr davon im EEPROM des Arduino speichern.
Verwendet man den EEPROM sollte man aber bedenken, das man nicht ständig Schreiben sollte, da die Zahl der mögliche Schreiboperationen zwar recht hoch, aber trotzdem begrenzt ist.
Andererseits bietet der EEPROM mit dem größeren Speicherplatz die Möglichkeit, die einzelnen Werte auf einzelne Bytes (oder mehrere Bytes) zu setzen, was die Verarbeitung der Werte erleichtert.
965  International / Deutsch / Re: Ausgang per Uhrzeit/Datum schalten on: June 22, 2012, 06:59:46 am
Neu anfangen würde ich auch nicht. Aber die Funktionalität erweitern ist ja kein Problem. Statt nur zwei Werten (An, Aus), bekommt der Arduino nun halt 4 Werte geschickt (Wochentag, Uhrzeit An, Wochentag, Uhrzeit aus). Das Ganze ist sogar auf drei Werte reduzierbar, wenn man die Einschränkung in Kauf nimmt, das man nicht Montag 23:45 einschalten und Dienstag 0:15 ausschalten kann, dann braucht man nur einmal den Wochentag übertragen.

Im Prinzip läuft das Ganze ja auf ein typisches "Kalender - Termine" Problem heraus. Ein "Termin" sind immer zwei Datums/Zeitangaben (in Deinem Fall fürs Ein- und Ausschalten). Termine können halt entweder Einzeltermine sein (einmalig) oder Wiederholungstermine (stündlich, täglich, wöchentlich, monatlich, jährlich etc.)
Dieses Problem würde ich Programmtechnisch einmal sauber lösen und dafür ein entsprechendes "erweitertes" Protokoll bauen, das dann in PHP und auf dem Arduino sauber implementiert wird. Idealerweise gleich als Lib, dann ist es auch für andere Aufgaben wiederverwendbar. Quasi eine Arduino-Zeitschaltuhr mit Webschnittstelle.
Mario.
966  International / Deutsch / Re: Welche Funktion haben diese Bauteile (bischen OT) on: June 22, 2012, 12:30:16 am
Hatte ich auch gedacht, aber was sind das für Bauteile neben den Zenerdioden? Das Schaltzeichen kenne ich überhaupt nicht.
967  International / Deutsch / Re: Ikea-Lampan-Lampen-Umbau zu RGB-Licht / 19.06.12 -> FERTIG + Video on: June 21, 2012, 01:43:26 pm
... deswegen wandert se jetzt zu meiner Freundin, die findet die Lampe "einfach nur schööön"
Kann ich mir vorstellen, wenn erstmal eine Lampe auf der Schüssel steht, kann Mann den Deckel nicht mehr oben lassen *rofl*  smiley-twist

Aber im Ernst, schönes Projekt. Glückwunsch zur Vollendung.

Mario.
968  International / Deutsch / Re: sprintf() funktioniert nicht trotz #include <stdio.h> on: June 21, 2012, 01:28:38 pm
Eigentlich gehört die stdio.h schon zur IDE dazu. Ein find auf stdio.h fördert davon mehrere zu Tage.
Folgender minimaler Sketch läßt sich einfach compilieren, auch ohne "#include <stdio.h>".

Code:
void setup() {
  // put your setup code here, to run once:
  char text[20];
 
  sprintf(text,"%d",5);
}

void loop() {
  // put your main code here, to run repeatedly:
 
}

Poste doch mal Deinen Sketch, evtl. steckt da ja der Fehler drin.

Mario.
969  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 08:16:15 am
Die Klasse DateTime der RTClib hat eine Methode "dayOfWeek()", die ein Byte zurück liefert. Vermutlich den Wochentag als Zahl mit entweder Mo=0, Di=1 ... So=6 oder auch beginnend mit Sonntag So=0. Das müßtest Du ausprobieren.
Code:
//aktuelle Zeit
DateTime now = RTC.now();

//wochentag ermitteln
byte wochentag = now.dayOfWeek();
970  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 06:19:24 am
dataStringDate und dataStringTime sind Arrays vom Typ "character" (also ein Zeichen). Die Zahl gibt an, wie groß der "Container", also das Array sein soll. Die 11 kommt wiefolgt zustande: 2 Zeichen für den Tag, zwei Zeichen für den Montat und 4 Zeichen für das Jahr, dazu noch die zwei Punkte, das macht schon mal 10 Zeichen. Das 11 Zeichen wird benötigt, weil in C/C++ Strings (Zeichenketten) mit einer 0 (der Wert Null, nicht das Zeichen "0") terminiert werden. Somit muss man sich nicht immer merken, wie lang eine Zeichenkette ist. Bei der Verarbeitung wird immer so lange gelesen, bis man den Wert "0" findet.
971  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 04:02:09 am
Ja, einfach 2 Strings erzeugen  smiley
Code:
const char DATEFORMAT[] = "%02u.%02u.%04u";
const char TIMEFORMAT[] = "%02u:%02u:%02u";
...
 void loop() {

...
  static char dateString[11];
    sprintf(dateString, DATEFORMAT, now.day(), now.month(), now.year);
  static char timeString[9];
    sprintf(timeString, TIMEFORMAT, now.hour(),now.minute(),now.second() );

Serial.println(dateString); // Oder statt dessen  auf's LCD
Serial.println(timeString); // Oder statt dessen  auf's LCD

972  International / Deutsch / Re: Ausgang per Uhrzeit/Datum schalten on: June 20, 2012, 02:26:54 pm
Das sieht doch recht gut aus. Aus meiner Sicht sollte das passen. Du kannst ja als Kontrolle einfach den berechneten time2000 Wert mal zum Setzen der RTC verwenden und dann das Datum und die Uhrzeit auslesen. Das sollte dann nämlich stimmen.
Mario.
973  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 20, 2012, 05:42:52 am
Die Definition von "LOGFORMAT" muss ausserhalb der Funktion setup() erfolgen. Sonst ist es nur eine lokale Variable die nur innerhalb von setup() bekannt ist.
Also das
Code:
const char LOGFORMAT[] = "%02u.%02u.%04u %02u:%02u:%02u";
einfach vor setup() { ...} setzen.
974  International / Deutsch / Re: Sharp Is471f mit dem Arduino steuern on: June 19, 2012, 03:23:49 am
Dann würde ich ab jetzt schrittweise vorgehen.
Versuch erstmal mit folgendem Sketch heraus zu finden, ob der Sensor überhaupt was liefert:
Code:
const int sharp = 6;     
int buttonState = 0;       

void setup() {
  Serial.begin(9600);
  pinMode(sharp, INPUT);     
}

void loop(){
 
  buttonState = digitalRead(sharp);
 
  //status auf die serielle Konsole ausgeben
  Serial.print("state = ");
  Serial.println(buttonState);
 
  //eine Sekunde warten
  delay(1000);

}
Und poste mal bitte, wie Du den Sensor an den Arduino angeschlossen hast. Wenn der Sensor eine eigene Spannungsversorgung hat und nicht über den Arduino versorgt wird, müssen die beiden Massen verbunden sein, sonst passiert da nix.
975  International / Deutsch / Re: Sharp Is471f mit dem Arduino steuern on: June 18, 2012, 11:49:55 pm
Ein Fehler steckt schon mal im Code.
Code:
void loop(){
 
  buttonState = digitalRead(sharp);

 
  if (sharp == HIGH {     
 
    digitalWrite(ledPin, HIGH); 
  }
  else {
   
    digitalWrite(ledPin, LOW);
  }

sharp ist die Variable in der Du die Pin-Nr speicherst, an das Dein Sensor angeschlossen ist. buttonState ist die Variable, in der Du den aktuellen Zustand des Sensors speicherst. Allerdings prüfst Du im if-Block auf "sharp == HIGH" statt auf "buttonState == HIGH"
Du prüfst also schonmal die falsche Variable.
Mario.
Pages: 1 ... 63 64 [65] 66 67 ... 95