Show Posts
|
|
Pages: 1 ... 4 5 [6] 7 8 9
|
|
76
|
International / Deutsch / Re: Datei von SD über Ethernet übertragen
|
on: January 23, 2012, 04:00:11 am
|
Hallo andi357, natürlich funktioniert das mit der richtigen, entsprechenden Library, die automatisch die Pin-Ansteuerung hin und her wechselt. Das mit imho beste Tutorial findest du hier LadyadaThen we do the trick where we make the hardware SS pin #10 to an OUTPUT and HIGH to disable the wiznet chip while we check the card contents. Das ist die Stelle an der sich die Spreu vom Weizen trennt  Gruß, TriB
|
|
|
|
|
77
|
International / Deutsch / Re: Arduino ins Internet ohne statische IP
|
on: December 22, 2011, 04:39:58 am
|
Hallo hopefull, Es geht ja um keine sensiblen Daten, die dort abgelegt werden und auch nicht um die Gefahr, dass Dein Haus überhitzt, wenn es bei dem Controller mal zu einen Ausfall käme ;-) Man kann sehr simpel alle Anfragen an den Controller per Post mit einem Passwort oder einem Schlüssel versehen. Dieser könnte natürlich von findigen Hackern mitgeschnitten werden, aber das halte ich bei einem solchen Projekt schlichtweg für unwahrscheinlich  Dazu habe ich mal ein kleines Beispiel in einer anderen Diskussion geposted. Und nach einiger Recherche auch wieder gefunden: Funkschalter in Webserver einbindenGruß, Thomas
|
|
|
|
|
78
|
International / Deutsch / Re: Umstieg auf 1.0
|
on: December 14, 2011, 03:18:03 am
|
|
Guten Morgen,
die Aussage, alte Projekte zu belassen wie sie sind, kann ich nur beipflichten! Bei mir konnte ich keines meiner Projekte kompilieren und habe bis zu 100 Fehler erhalten. Da ich viel mit LED, Ethernet & SD Librarys arbeite, kann und möchte ich nicht stundenlang an einem funktionierenden Projekt herumdoktoren. Auch die "nicht standard" Librarys, die ich in das Verzeichnis kopiert habe werfen dermaßen viele Fehler, dass sich eine Analyse eher nicht lohnt.
Bei neuen Projekten werde ich aber auf jeden Fall mit der Zeit gehen und der neuen IDE eine Chance geben.
|
|
|
|
|
79
|
International / Deutsch / Re: Arduino ins Internet ohne statische IP
|
on: December 13, 2011, 11:01:01 am
|
Hallo hopefull, dafür gibt es Anbieter, die deine letzte aktive IP-Adresse speichern und diese dann über einen Namen auflösen. Dazu benötigst Du 2 Komponenten: - Einen Account bei z.B. DynDNS.org (oder einem Pendant)
- Einen Router der dies unterstützt (So gut wie alle seit ~2007, würde ich mutmaßen)
Dann kannst du bei dem Hoster einstellen welche Ports weitergeleitet werden. Das kann man sich vorstellen, wie ein Mehrfamilienhaus. Das hat die "Nummer" http://meinAccound.dyndns.org und die Klingel (für http) 80 oder 81. Diese leitest du dann in den Routereinstellungen auf die feste IP & den Port deines Ethernetshields um. Abgesehen von der Registrierung bei einem Hoster, eine Sache von geschlagenen 3 Minuten 
|
|
|
|
|
80
|
International / Deutsch / Re: Daten seriell an eine C# Anwendung senden
|
on: December 12, 2011, 04:48:12 am
|
|
Hallo kucky,
das ist nicht so wild. Der Serielle Controller bekommt die Daten übermittelt und reicht diese dann in einem Rutsch weiter durch. Wenn nun sehr viele Daten übermittelt werden oder schnell hintereinander, dann werden diese prozedural abgearbeitet und es kann dazu kommen, dass die Daten in mehrere Blöcke aufgeteilt werden. In diesem Fall werden die aber dann wieder zusammengesetzt.
|
|
|
|
|
81
|
International / Deutsch / Re: Daten seriell an eine C# Anwendung senden
|
on: December 09, 2011, 04:14:43 am
|
|
Hallo Kucky,
das freut mich! Mit dem msg.Remove(5) bekommst du dann später aber Probleme, wenn sich die Länge der übermittelten Zeichenfolge ändern sollte. Oder du vielleicht mal Text übermitteln möchtest. Das geht mit Replace("\r\n","") einfacher, finde ich. Oder Replace(cr+ln,"")
Das gehört dann zu den vorausschauenden Programmierungen, weil einen die fehlende Voraussicht später immer bitter wieder einholt ;-) Aber da du ja noch an den Anfängen der C# Programmierung stehst, wird sich das noch einspielen!
Bei Fragen melde dich ruhig!
|
|
|
|
|
82
|
International / Deutsch / Re: Daten seriell an eine C# Anwendung senden
|
on: December 08, 2011, 08:38:51 am
|
Hallo Kucky, Frag besser im DataReceived Event: string botConsoleRX = serialPort1.ReadExisting(); ab. Das sollte dich weiter bringen als das aktuell empfangende Byte. Allerdings gibt es noch ein paar Dinge, die du dort beachten solltest. Zum Beispiel gibt der Arduino bei Serial.print nur die einzelnen Zeichen und bei Serial.println auch einen Zeilenumbruch mit. Den sollte man abwarten, bis die Daten komplett sind: private string dataToReceive = string.Empty; private char lf = (char)10;//Line Feed private char cr = (char)13;//Carriage Return private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { string msg = serialPort1.ReadExisting(); if (!msg.EndsWith(lf,false,System.Globalization.CultureInfo.CurrentCulture)) { dataToReceive += msg; } else { msg = msg.Replace(lf,''); try { int ARDUINO_Value = Convert.ToInt16(dataToReceive+msg); }catch(Exception ex) { MessageBox.Show(ex.Message, "Konvertierungsfehler"); } dataToReceive = string.Empty; } } Das geht sicherlich noch eleganter. Habe ich mal kurz zusammengehackt. Da ich nicht weiß ob du "lf" oder "cr" vom Ardu übermittelt bekommst, musst das das noch testen. Enter & Return machen eben programmatisch einen Unterschied...
|
|
|
|
|
83
|
International / Deutsch / Re: Totalausfall bei 2 schleifen
|
on: November 21, 2011, 10:54:59 am
|
|
Hallo zusammen,
da ich ebenfalls ein Snakespiel gebastelt habe, würde mich das ebenfalls interessieren. So wie ich das aber sehe, kommt man nicht darum herum einmal das gesamte Spielfeld in einem Array darzustellen. Die Schlange kann theoretisch zum Ende des Spiels das gesamte Feld ausfüllen (die Wahrscheinlichkeit bei 8192 einmal außenvor gelassen), dann wäre die Speicherauslastung die selbe.
Damit die Schlange "um die Ecke" kommt, muss man eben jede Position speichern. Für die Kollisionsabfrage habe ich auch zusätzlich noch den Kopf und das Ende seperat gespeichert. (abgesehen davon muss man ja auch die Laufrichtung bestimmen können)
Generell würde ich mich erstmal fragen wie groß das Spielfeld überhaupt Sinn macht um einen Spielspaß zu gewährleisten. Eine Verkleinerung (oder quasi eine andere Auflösung) würde ich daher empfehlen!
|
|
|
|
|
84
|
International / Deutsch / Re: LED Coffee-Table Beratung
|
on: November 21, 2011, 05:46:54 am
|
Hallo zusammen, zwar habe ich einige Zeit nichts mehr von mir hören lassen (Umzug, Renovierung, usw...), doch ging das Projekt ein bisschen weiter. Aktuell habe ich jegliche Email, Facebook und RSS-Feed Geschichten vom Arduino entfernt und in einen Client auf Compact Framework-Basis integriert. Zum einen, weil der Ardu bereits mit Code überläuft, zum anderen dient mein altes HTC Touch Diamond II nun als Touchsteuerung. Das passiert erstmal auf W-LAN Basis, da ich noch keinen COM-Controler habe der als Master eine Verbindung ermöglicht. Abgesehen davon sind alle Pins des Ardu belegt oO Nun habe ich von einem Kollegen einen etwas älteren Arduino bekommen (glaub der Diecimila) und plane die Ethernet-Steuerung von der LED-Steuerung zu trennen. Das hätte den charmanten Effekt, dass ich auf den Controller zugreifen kann und die LED´s weiter ihre Arbeit verrichten. Zusätzlich gewinne ich etwas mehr Speicherplatz und kann die Abläufe parallelisieren. Nach etwas googelei habe ich auch ein paar Tutorials gefunden die eine direkte Verbindung zwischen 2 Arduinos beschreiben. http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1195968384http://hacknmod.com/hack/how-to-connect-multiple-arduino-microcontrollers-using-i2c/Trotzdem ist mir noch nicht ganz klar wie ich das anstellen soll. Vorallem, welchen Ardu nehme ich für was? Der Diecimila wird an der Ethernetshield angeschlossen und beinhaltet die gesamte Steuerungslogik. Der Uno wird mit dem Spectrum Analyzer ausgestattet und mit den LED´s verbunden. Dann prüfe ich im Loop ob es eine Eingabe gibt und fahre die verschiedenen LED-Programme ab. Allerdings geht dann die Möglichkeit verloren anständig zu Debuggen oder z.B. gezielt Pins anzusteuern oder auszulesen :-/ Wenn ich nun z.B. Snake spielen möchte, steuere ich diese nun über den Control-Ardu oder den LED-Ardu? Die Reaktionszeit spricht für letzteres, die Trennung zwischen Bedienung und Backend eher für ersteres. Vielleicht hat jemand von Euch bereits Erfahrungen mit dem Verbindungen 2er Arduinos gemacht und kann etwas berichten, was meine Entscheidungsfindung vereinfacht 
|
|
|
|
|
85
|
International / Deutsch / Re: Mal was anderes: Oberflächen?
|
on: September 20, 2011, 03:55:52 am
|
|
Hallo DE8MSH,
von dem Gedanken, die Eierlegendewollmilchsau erschaffen zu können, solltest du dich leider verabschieden. Es gibt zwar Möglichkeiten, .Net mit Mono auf Linux laufen zu lassen und gewiss auch andersherum. Das ist aber aufwändig und im Endeffekt programmiert man doch in zwei Projekten. Die Idee mit Java wäre schon ein guter Ansatz, fällt aber raus. Dann bliebe noch HTML. Das hat zwar nix mit Programmieren zu tun, jedoch per POST oder GET ist eine Steuerung eines Ethernet Shields problemlos möglich. DHTML, also mit JavaScript und CSS läuft auf allen Rechnern und auch mobilen Geräten. Wäre das vielleicht ein Alternative?
Momentan habe ich selbst ein EthernetShield mit einer simplen Oberfläche. Diese ist auf der SD-Karte gespeichert und holt sich dynamisch die PIN-Werte und kann diese natürlich auch verändern. Somit mülle ich den Speicher des Ardu nicht voll. Jedoch ist mir das auf Dauer etwas zu langsam und ich habe für mein altes Windows Mobile Gerät eine Oberfläche geschrieben, die mir exakt die selben GET Befehle an den Ardu sendet. Dort kann man Aktionen hinterlegen (Befehl + Wert + Passwort) und diese dann völlig frei einrichten. Für die Funkstecker habe ich auch eine Möglichkeit geschaffen. Man kann so viele angeben wie gewünscht und nummeriert diese einfach durch.
Das Design ist allerdings noch in den Kinderschuhen und alle Funktionen sind noch nicht implementiert. (Automatische Prüfung auf Emails alle paar Stunden, usw)
Gruß, trib
|
|
|
|
|
86
|
International / Deutsch / Re: IC2-LCD + EthernetShield
|
on: September 14, 2011, 06:58:25 am
|
Hallo Levi23, die Analog Pins werden von dem EthernetShield nicht verwendet. Auch bei dem EthernetShield mit SD Karte nicht. Wie Hier nachzulesen ist, wird der Pin 4 von der SD Karte und 11, 12 & 13 für die Ethernet Verbindung gebracuht. PIN 10 wird genutzt um quasi zwischen SD und Ethernet umzuschalten.
|
|
|
|
|
88
|
International / Deutsch / Re: Funkschalter in Webserver einbinden
|
on: September 05, 2011, 09:17:01 am
|
Hallo Levi23, warum sich der Ardu aufhängt weiß ich nicht genau. Da jedes Println sofort an den Client gesendet wird, sollte die Menge an HTML-Code kaum eine Rolle spielen. Trotzdem hast du das äußerst Redundant programmiert. D.h. Tabelle1 & Tabelle2 sind nahezu identisch. Das könnte man optimaler in einer Schleife lösen. Falls du nun noch einen weiteren Funkstecker einbauen möchtest, müsstest du nur die Schleife um einen Zähler erweitern. (Vorausgesetzt, du lagerst FUNKAN in ein Array aus) Genauso if(readString.indexOf("1=ausschalten") > -1) dort wäre es schöner, die Nummer des Schalters zu extrahieren und diese dann an die Funktion zu Übergeben. Z.B.: if(readString.indexOf("=ausschalten") > -1) mySwitch.switchOff('c', 1, readString[0]); //Zeichen an der ersten Position auslesen else if(readString.indexOf("=einschalten") > -1) [...]
Zur Passwortsicherung: Erweiter deine <form method=get> um ein <Input type='password' name='pw'>. Das kannst du dann genauso auslesen, wie den Ein-/Ausschalter. Nun sollte dein readString so aussehen: "1=ausschalten &pw=DeinPasswort".
|
|
|
|
|
90
|
International / Deutsch / Re: Funkschalter in Webserver einbinden
|
on: August 29, 2011, 03:15:16 pm
|
Wie versprochen poste ich mal meinen Code der Webseite. Der zieht sich einfach das Ergebnis des Webresponses und gibt daraufhin die entsprechenden AN/AUS Button aus. <script type="text/javascript"> function WritePin(PinNo, State) { document.write("<tr bgColor='#222222'><td bgcolor='#222222'><font face='Verdana' color='#CFCFCF' size='2'>Ausgang "+PinNo+"<br></font></td>");
switch(State) { case '0': document.write("<td align='center' bgcolor='#222222'><input type='submit' name='pin" + PinNo + "' value='off' class='buttonOn'></td>"); document.write("<td align='center'><font color='green' size='5'>ON</font></td>"); break; case '1': document.write("<td align='center' bgcolor='#222222'><input type='submit' name='pin" + PinNo + "' value='on' class='buttonOff'></td>"); document.write("<td align='center'><font color='#FF0000' size='5'>OFF</font></td>"); break; default: document.write("<td align='center' bgcolor='#222222'><input type='button' value='Analog Input' class='buttonNone'></td>"); document.write("<td align='center'><font color='#CFCFCF' size='5'>" + State + "</font></td>"); break; } document.write("</tr>"); }
// new prototype defintion document.include = function(url) { var oRequest = new XMLHttpRequest(); var sURL = '/?pin'+url;
oRequest.open("GET",sURL,false); oRequest.setRequestHeader("User-Agent",navigator.userAgent); oRequest.send(null)
if (oRequest.status==200) { var txt = oRequest.responseText; if(txt != "") { WritePin(url,txt); } else document.write(txt); } else document.write("<td align='center'><font color='#CFCFCF' size='5'>Error executing XMLHttpRequest call! "+url+"</font></td>"); } </script> [...]Tabellen, Form mit GET, usw.[...] <script> document.include("5"); document.include("A5"); </script>
Im Ardu unterscheide ich dann natürlich zwischen "A" für Analog und nur der reinen Zahl als Digitalpin: //Show Pins if(strstr(filename, "?pin") != 0) { char * thisChar; filename = filename + 4; //Remove "?pin" Serial.println(filename); //Pins ein/ausschalten if(strstr(filename, "=") != 0) { Serial.println("Turn Pins"); thisChar = &filename[0]; if(filename+2 == "on") digitalWrite(atoi(thisChar), HIGH); if(filename+2 == "off") digitalWrite(atoi(thisChar), LOW); client.print(filename); }else{ if(strstr(filename, "A") != 0) { //Analog Pin filename = filename+1;//Remove A thisChar = &filename[0]; Serial.println(thisChar); client.print(analogRead(atoi(thisChar))); } else { //DigitalPin thisChar = &filename[0]; client.print(digitalRead(atoi(thisChar))); Serial.println("digital Read hat geklappt"); } } } Hoffe das ist soweit alles recht selbst erklärend. Grundlage zum Arduino-Code ist die <Ethernet.h> Gruß, trib
|
|
|
|
|