Show Posts
Pages: 1 ... 5 6 [7] 8 9
91  Using Arduino / LEDs and Multiplexing / Re: LED Matrix - animation pattern on: September 07, 2011, 11:32:10 am
And a little Snake game:



Poorly the LED´s are to bright for my camera. In reality it looks more clear ans smooth.
The speed can be controlled by a poti or raised by every "apple".
92  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
Code:
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.:
Code:
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".
93  Using Arduino / Networking, Protocols, and Devices / Re: Send big page of HTML on: August 31, 2011, 10:12:49 am
Hi,

just check out this Tutorial from Ladyada. I´am using it by myself and didn´t get any Error by opening lage Websites.
There is a buffer included, which sends only a specified amount of data per read.
Maybe that´s what you´re searching for.
94  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.
Code:
<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:
Code:
//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
95  International / Deutsch / Re: Funkschalter in Webserver einbinden on: August 29, 2011, 03:50:16 am
Hallo Levi23,

Zuhause habe ich noch ein bisschen Code, der den Arduino etwas entlastet und alle HTML-Sachen auf die SD Karte auslagert und nur minimalen Platz auf dem Ardu benötigt.
Das Ganze habe ich mit einer Art Passwortabfrage abgesichert. Das ist aber noch sehr, sehr rundimentär implementiert.
Durch das GET, wird es zum einen in reiner Form übertragen und des weiteren kann man es in der Browserzeile sehen ;-)
Zumindest schützt es vor dem Zugriff von WebCrawlern oder Technik begeisterten Freunden smiley-grin

Sieht dann in etwa so aus:
http://meinArduino:80/?aktion=pins&pin=5&pw=4711&btn=Submit
Die einzelnen Werte liest man aus und liefert den Pinstatus zurück. Das ein/ausschalten wird dann genauso gelöst und nur eine andere "Aktion" mitgeliefert.

Wen ich heute Abend dran denke, Poste ich mal die Codes.

Gruß,
trib

[Edit:] Natürlich hat sui volkommen Recht und es handelte sich in meinem Beispiel um ein GET und nicht um ein POST. Das habe ich mal angepasst.
96  International / Deutsch / Re: XML per AJAX in HTML einbinden on: August 29, 2011, 03:34:04 am
Hallo zusammen,

um eine möglichst kleine Seite zu schreiben und den Speicher des Ardu zu entlasten, habe ich auf dem Ardu eine Funktion, die den PIN entgegen nimmt und als Text den Status zurück sendet.
Die Webseite hat eine Schleife, die dann alle relevanten Pins abfragt und schicke Ein/Aus-Schalter anzeigt, bzw. den aktuellen Wert des Analog pins.
Etwas Trickreich war eigentlich nur, das die Seite die Antwort des Ardu nicht als weitere Seite anzeigt, sondern richtig verarbeitet.

Das geht dann in etwa so:
Code:
  // the file to be read
  pageURL = new java.net.URL("www.MeinArdu.dyndns.oder.so");

  // step 1, open the URL
  var openConnection = pageURL.openConnection;
  theConnection = openConnection();

  // step 2, connect to server
  var t=theConnection.connect;
  t();

  // step 3, read the file using HTTP protocol
  var getContent = theConnection.getContent;
  var theURLStream = getContent();

  // step 4, get an handle and fetch the content length
  var readStream = theURLStream.read;
  var gcl = theConnection.getContentLength;
  gcLen = gcl();

  // and finally, read into a variable
  theText =""
  for (i = 1; i <gcLen; i++)
  {
   theText += new java.lang.Character(readStream())
  }
Der Code ist noch etwas veraltet. Habe die aktuellen Sourcen gerade nicht da.
97  International / Deutsch / Re: Symbian Handy mit Arduino verbinden on: August 25, 2011, 07:56:21 am
Die einfachste Methode, die ich kenne um schnell und einfach ans Ziel zu kommen ist Java.
So eine kleine *.jar Datei ist flott erstellt und kann auf jedem Nokia ausgeführt werden.

Soweit ich weiß, hat Nokia für Symbian eine SDK freigegeben. Runterladen und herumspielen smiley Da lernt man am meisten!

...
Da ist man doch immer wieder über die Möglichkeiten dieses Internetzes überrascht!
Symbian C++
Developer.Nokia
Tuts & Projekts
98  International / Deutsch / Re: Ascii Code on: August 25, 2011, 04:59:49 am
Hallo Apfel3,

das ist doch recht simpel. Da du eigentlich nur die Zahlen benötigst, kannst du doch die ASCII-Zeichen einfach umrechen.
0 = 48
...
9 = 57
Daher kann man einfach 48 abziehen und bekommt seine Zahl als Ergebnis. Bei den Buchstaben ist es dann allerdings etwas anders. Dazu kann man aber einfach den Datentypen char benutzen und einen Integer-Wert zuweisen.

Hier gibt es eine ASCII-Tabelle, die ich recht übersichtlich finde.
Damit kann man das easy umrechen. Zur Not baut man sich eine Switch-Case Anweisung.

Gruß,
trib
99  International / Deutsch / Re: Bitte um Unterstützung: LED-Projekt eines Anfängers on: August 24, 2011, 04:09:45 am
Mehrfache einspeisung bei nur einer kette geht auch.

Das ist sogar explizit so empfohlen. Das habe ich bei meiner Kette ebenfalls gemacht, da ansonsten die letzten LED´s recht dunkel geworden sind. Also die Data und Clock Pins können durchgängig alle 84 Shiftbrites verbinden. Die Spannung sollte ca. alle 25 Stück parallel angeschlossen werden.
100  International / Deutsch / Re: Bitte um Unterstützung: LED-Projekt eines Anfängers on: August 23, 2011, 06:51:24 am
Sieht für mich so aus:
Quote
Each channel can also be adjusted with a separate current control register, for fine tuning of each LED if close brightness matching is necessary.
[Quelle]
101  International / Deutsch / Re: Bitte um Unterstützung: LED-Projekt eines Anfängers on: August 22, 2011, 07:31:22 am
Hallo friede,

da ich gerade aktuell meinen LED-Tisch mehr oder weniger fertiggestellt habe, kann ich da am einfachsten nur auf meinen Thread verweisen. Dort vergleiche ich erstmal die Shiftbrite LED mit der Kette von Bliptronics.
Für ein ordentliches Dimmen würde ich aber eher zu den Shiftbrite tendieren.

Ein Faden von einer zur anderen Farbe ist recht einfach. Da hatte ich mal ein bisschen Code im Internationalen Forum gepostet. Dazu habe ich auch ein Potentiometer angeschlossen, anhand dessen ich die Taktung bestimme. Wen nun noch 3 Regler für Rot, Grün und Blau hinzu kommen und vielleicht ein Schalter um zwischen verschiedenen Modi hin und her zuschalten, kommt man mit einem einfachen Arduino Uno hin.

Gruß,
trib
102  Using Arduino / LEDs and Multiplexing / Re: LED Matrix - animation pattern on: August 16, 2011, 04:53:43 pm
To show what I mean and to introduce my table:



EDIT: However a YT video is embedded correctly  smiley-roll-sweat
103  International / Deutsch / Re: Ausgabe des Serial Monitors on: August 16, 2011, 06:09:02 am
Dann schlage ich vor, dass Du ein kleines delay(50); einbaust und bei jedem if (SensorPreviousValue != SensorCurrentValue) den SensorCurrentValue ausgibst. So ist erkennbar wann der Schalter auslöst und du siehst ob das unkontrolliert vorkommt.
Evtl. ist der Wiederstand unterdimensioniert?!? (Debounce Tutorial)
104  Using Arduino / LEDs and Multiplexing / LED Matrix - animation pattern on: August 16, 2011, 03:37:46 am
Hi,

in my little LED Coffee-Table project, I´d like to integrate some cool animations.
The very most threads show a specified matrix for a special case. (Clock, running text, equalizer, ect.)

So I´m looking for some animaton patterns, to run them one after another. The library or LED type, should be unimportant.
What do I expect?
Some waves, circles or rectangles running over the matrix. Calculate some spectrals and produce some nice outputs.

For example a very simple ambiente-light which is fading very slow:
Code:
LEDPixels LP;
int MyDisplay[100];
byte r,g,b;
int moveSpeed = 300;
void Ambiente()
{
  //Fade through random colors
  byte tr,tg,tb;
  tr = random(0,31);
  tg = random(0,31);
  tb = random(0,31);
  FadeLED(20, moveSpeed, r,g,b, tr,tg,tb);
  r = tr;
  g = tg;
  b = tb;
}

void FadeLED(int steps, int fadedelay, byte red1, byte green1, byte blue1, byte red2, byte green2, byte blue2)
{
  for (int  fadindex = 0;  fadindex < steps+1;  fadindex++)
  {
    LP.setRange(0,99,LP.color((red1 * (steps -  fadindex) + red2 *  fadindex)/steps,
    (green1 * (steps -  fadindex) + green2 *  fadindex)/steps,
    (blue1 * (steps -  fadindex) + blue2 *  fadindex)/steps)); 
    LP.show();
    delay(fadedelay);
  }
}

Or a matrix, which seems to float like in the movie:
Code:
int MatrixColor = LP.color(0,31,0); //Green
void setup() {
  LP.initialize(20, &MyDisplay[0],100, 8, 7 );  //Frequence, address of display, no of leds,clock (green), data (yellow)
  LP.gridWidth=10;
  LP.gridHeight=10;
}
void TheMatrix()

  ShiftMatrixLines();
  DrawMatrixHeader();
  LP.show();
  delay(100);
}

//Create new points in the first row. Probability to set it coloured: 1/3rd
void DrawMatrixHeader()
{
  for(int i = 0; i < LP.gridWidth;i++)
  {
    MyDisplay[LP.Translate(i,9)] = random(2,4)%2 == 0 ? LP.color(0,0,0) : MatrixColor; //Chance of 1/3rd
  }
}

//Shift Matrixrow down
void ShiftMatrixLines()
{
  for(byte i = 0; i < LP.gridHeight;i++)
  {
    for(byte j = 0; j < LP.gridWidth;j++)
    {
      MyDisplay[LP.Translate(i,j)] = MyDisplay[LP.Translate(i,j+1)];
    }
  }
}

In this cases I´m using a Bliptronics 8mm LED chain. So the "MyDisplay" Array represents the Matrix like this:
8 3 2
7 4 1
6 5 0
The function "LP.Translate" from the <LEDPixels.h> Library calculates X/Y-Coordinates to the chain.

I hope that we can collect some animations here, which easyly can be translated to any other matrix.
105  International / Deutsch / Re: Ausgabe des Serial Monitors on: August 15, 2011, 04:01:41 am
Hallo yog_slogoth,

Deine Programmierung setzt im Falle eines Drucks auf den Sensor die "lastTimeMoved".
Daraufhin wird natürlich die Ausgabe der Zufallszahl aufgerufen. Und zwar so oft, bis 500 Millisekunden vergangen sind.
Die loop()-Funktion wird kontinuierlich aufgerufen und das ziemlich schnell hintereinander. Da kann es durchaus vorkommen, das Du ein paar Hundert Zahlen ausgegeben bekommst, bis dieses Intervall abgelaufen ist.

Warum nicht alles in der Abfrage zu vereinen? Schließlich ist der Sensor ja "debounced".
Code:
void loop()
{
  SensorCurrentValue=digitalRead(button);
  if (SensorPreviousValue != SensorCurrentValue){
    SensorPreviousValue = SensorCurrentValue;
    digitalWrite(LEDPin, LOW);
    randNumber = random(10); 
    Serial.println(randNumber);   
  }
  else{
    digitalWrite(LEDPin, HIGH);   
  }
}

Vielleicht habe ich auch nur zu wenig Kaffee getrunken und das Problem nicht korrekt erfasst smiley
Pages: 1 ... 5 6 [7] 8 9