Show Posts
Pages: [1]
1  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen [OPGELOST!] on: June 18, 2012, 06:34:42 am
Hier ben ik weer smiley

Ondertussen heb ik al een presenatie gegeven met mijn arduino en mijn docenten vonden het heel goed. De uiteindelijke punten krijg ik op het einde van de maand. Daarnaast heb ik een nieuwe router en deze heeft een extra utp uitgang. Dus ik dacht ik test hem thuis ook nog eens, maar nu krijg ik een probleem
Code:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };       
byte ip[] =  { 192,168,1,90}; //change this          //instellingen labo domoctica 10,25,90         thuis 192,168,1,90
byte subnet[] = {255,255,255,0}; //change this        //instellingen labo domoctica 255,255,0,0     thuis 255,255,255,0
byte gateway[] = {192,168,1,1}; //change this       //instellingen labo domoctica 10,25,255,254     thuis 192,168,1,1
byte dns[] = { 192, 168, 1, 1 }; //change this             //instellingen labo domoctica 10,65,1,     thuis 192,168,1,1
Maar als fouten:
Code:
TwitterCall_thuis:10: error: 'byte dns []' redeclared as different kind of symbol
C:\Users\Paul\Desktop\arduino-1.0.1\libraries\Ethernet/Dhcp.h:64: error: previous declaration of '<anonymous enum> dns'

Iemand een idee wat het zou kunnen zijn ?

BTW; in mijn paper stonden er 3 vermeldingen voor het forum, 2 voor het nederlandstallig en nog eens een paar extra voor jo3ri en jantje.
Joost
2  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen [OPGELOST!] on: May 24, 2012, 06:17:59 am
Blijkbaar was ik mis, door dat mijn ledje er niet perfect in zat smiley
Werkt perfect nu! Super hard bedankt nog eens aan iedereen en aan Jantje en JO3RI in het bijzonder
3  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen [OPGELOST!] on: May 24, 2012, 05:46:15 am
Nu dacht ik dat helemaal in orde was, blijkbaar nog niet. Zolang de software loopt met de serailmonitor loopt hij perfect, vanaf dat er software (serial is al uit) volledig afgesloten is leest hij niks nieuws meer binnen.
Is er misschien een truckje om hem telkens te resten? Want ik maak op uit het antwoord van Jantje dat dit is wat de serail monitor doet.
Wat rond surfen leert me dat ik dan in de sourcecode zou moeten gaan prutsen. Ik ga ervan uit dat ze dan gewoon de sketch bedoelen. Of is het beter om het hardware matig te doen? zoals http://arduino.cc/blog/2007/09/07/enabling-auto-reset-on-the-arduino-ng-and-serial-boards/

Ofwel moet ik mijn delay groter maken en op het einde een poortje hoog maken en die verbinden met de reset ingang? Straks test ik of hij bij de 'gewone' resetknop de tweets inleest. Zonder het programma zelf op te starten.
4  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen [OPGELOST!] on: May 21, 2012, 08:41:55 am
En blijkbaar leest hij ze wel altijd opnieuw in als ik de serial montior opnieuw open.
Zelfs met een lege sketch of niet de originele sketch.

Raar, vre raar  smiley-confuse
5  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen [OPGELOST!] on: May 21, 2012, 08:34:47 am
Blijkbaar heb ik iets te vroeg gejuigd. Mijn nieuwe tweets leest hij niet (meer) in. Ik ga de code hier nog eens onder zetten, heb enkel maar de a-check er in gezet. Dit om het overzichtelijk te houden.
Code:
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };
byte ip[] =  { 10,25,32,90}; //change this
byte subnet[] = {255,255,0,0}; //change this
byte gateway[] = {10,25,255,254}; //change this
byte dns[] = {10,56,1,1}; //change this
EthernetClient client;
String TwitterName ="jariboe"; //change this to your own twittername, or follow me ;-)
char tweet[140];
String SearchString ="<title>";
byte charsize;
char serverName[] = "api.twitter.com";  // twitter URL
int leD1 = 8;                
int leD2 = 7;
int leD3 = 6;
int leD4 = 5;

void setup() {
  pinMode(leD1, OUTPUT);
  pinMode(leD2, OUTPUT);
  pinMode(leD3, OUTPUT);
  pinMode(leD4, OUTPUT);
  // initialize serial:
  Serial.begin(9600);
  // attempt a DHCP connection:
  Ethernet.begin(mac, ip, dns, gateway, subnet);
  // connect to Twitter:
  delay(3000);
}

void loop(){
  
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    TextFinder  finder( client,2 );
    Serial.println("making HTTP request...");
    // make HTTP GET request to twitter:
    client.print("GET /1/statuses/user_timeline.rss?screen_name=");
    client.print(TwitterName);
    client.println("&count=1 HTTP/1.1");
    client.println("HOST: api.twitter.com");
    client.println();
    Serial.println("sended HTTP request...");
    memset (tweet,0x03,sizeof(tweet)); //we vullen de tweet met ETX (End of Text)
    while (client.connected()) {
      if (client.available()) {
        Serial.println("looking for tweet...");
        SearchString = SearchString + TwitterName + ": ";
        charsize = SearchString.length() + 1;
        char StartHere[charsize];
        char EndHere[] = "</title>";
        SearchString.toCharArray(StartHere,charsize);
        if((finder.find("<item>")&&(finder.getString(StartHere,EndHere,tweet,140)!=0)))
          Serial.println(tweet);
        break;
      }
      
      
    }
    delay(1);
    client.stop();
  }
  Serial.println("start de verwerking ...");
  if (tweet[0] != 0x03) { //als het eerste karakter in de char tweet niet gelijk is aan 0x03, dan staat er dus iets anders bv a of b of q
      for (byte i = 0; i <140; i++){ // we zoeken de a op alle 140 plaatsen
        if (tweet[i] == 'a' ){
          Serial.print("a verwerkt! op plaats: ");
          Serial.println(i); // laat ons zien op welke plaats je een a vond. want mogelijks is dat niet op de eerste plaats in de tweet
                             digitalWrite (leD1, HIGH);        //led 1 aan
                             delay (1000);                     // laatste actie aanhouden
                             digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             delay (100);
                              digitalWrite (leD1, HIGH);        //led 1 aan
                             delay (1000);                     // laatste actie aanhouden
                             digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             delay (100);
                              digitalWrite (leD3, HIGH);        //led 1 aan
                             delay (1000);                     // laatste actie aanhouden
                             digitalWrite (leD3 , LOW);         //led 1 uit en naar de volgende
                             delay (100);
        }
        if (tweet[i] == 'b' ){
          Serial.print("b verwerkt! op plaats: ");
          Serial.println(i); // index b printen
        }
      }
      
    }
  Serial.println("delay...");
  delay (60000);
  // don't make this less than 30000 (30 secs), because you can't connect to the twitter servers faster (you'll be banned)
  // off course it would be better to use the "Blink without delay", but I leave that to you.
}

Met de Tweet: Allez Hupla (was goed om ook de hoofdletters te checken)
Quote
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
Allez Hupla
start de verwerking ...
a verwerkt! op plaats: 10
delay...
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
start de verwerking ...
delay...
Filmpje komt er zeker aan als ik mijn nieuwe camera heb, pas na de examens.
6  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen on: May 16, 2012, 05:02:01 am
Met jullie hulp werkt het zo goed als perfect!
Mijn voorlopig tussen test zijn voor de rest ook super. Van retweet's trek hij hem niets aan en van antwoorden op de tweeds ook niet. En dat was wel de bedoeling.  smiley-mr-green
Enkel leest hij eenmalig de tweet zelf in en als er een nieuwe verschijnt trek de arduino er zich niks van aan en doet gewoon lustig voort.
@jantje en JO3RI: Willen jullie met naam en toenaam in mijn eindproject ? Want dankzij jullie kreeg ik weer op de rails. Stuur me dan een prive-bericht.

Echt merci!  smiley-grin
7  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen on: May 15, 2012, 07:38:48 am
Die 'a' werkt, allezins heb ik er geen foutmeldingen meer door. Maar nog krijg ik het niet goed.
De tweetverwerking zelf krijg ik nog altijd niet goed smiley-sad. Ik heb het nu zo aangepast:
De 97 staat er in omdat ik zeker wou zijn als hij misschien toch nog op de ASSCI-code zou overgaan, dat ik het dan ook kon verwerken.

Code:
Serial.println(tweet);
                          char tweet;
                        {   while (tweet > 0);     // pas reageren als er iets is in de tweet zit
                           Serial.println("in de while lus");
                                             
                      if (tweet == '97' )                       //is de ingegeven waarde a dan... Telt enkel voor chars
                            {//digitalWrite (leD1, HIGH);        //led 1 aan
                             //delay (1000);                     // laatste actie aanhouden
                             //digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             //delay (100);
                              Serial.println("97 verwerkt!");}
                       if (tweet == 'a' )                       //is de ingegeven waarde a dan... Telt enkel voor chars
                            {//digitalWrite (leD1, HIGH);        //led 1 aan
                             //delay (1000);                     // laatste actie aanhouden
                             //digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             //delay (100);
                              Serial.println("a verwerkt!");}
                      else
                            {//digitalWrite (leD2, HIGH);        //led 2 aan
                              //delay (1000);                     // laatste actie aanhouden
                              //digitalWrite (leD2, LOW);         //led 2 uit en naar de volgende
                              //delay (100);
                              {Serial.println("Niets verwerkt");}
                     }}
                     
  break;

En dat wordt dan
Quote
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
abaaabbb
in de while lus
Niets verwerkt
delay...
Mijn tweet is nog altijd abaaabbb.
Ik heb echt het gevoel dat ik er zo dicht bij ben.... Nog iemand een (hopelijk) laatste tip?  smiley-razz

Joost
8  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen on: May 14, 2012, 03:40:21 am
Ik heb het getest met jouw systeem en nog krijg ik het niet goed. Als ik gewoon 'if tweet[0] == "a"' er insteek krijg ik een waarschuwing dat hij haakjes verwacht.
Als ik die er bij doe zegt hij dat er fout is namelijk: ' TwitterBeter:60: error: ISO C++ forbids comparison between pointer and integer'
Moet er wel bij zeggen dat ik hiervoor al de lijn 'char tweet' er uit heb gehaald. Met die er in kreeg ik andere fout: 'TwitterBeter:60: error: invalid types 'char[int]' for array subscript'.
 smiley-mr-green
Graag wil ik mijn code zelf opstellen smiley
En nog een vraagje als ik werk met if tweet[0] == "a"' vergelijkt hij dan enkel de eerste letter met a of gaat hij dan uiteindelijk alle letters vergelijken daarmee?  smiley-roll-sweat
Ik bedoel moet ik mijn code dan uiteindelijk zo uitwerken:
if tweet[0] == "a"'
if tweet[0] == "b"'
if tweet[0] == "c"'
.....
if tweet[1] == "a"'
if tweet[1] == "b"'
if tweet[1] == "c"'
....
En dat dan tot if tweet[140] == "?"'

Na weekendje sukkelen zou ik graag weer op de rails komen, of de arduino gaat hier nog eens vleugels krijgen  smiley-grin
9  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen on: May 10, 2012, 06:45:49 am
Jouw code is echt veel beter, toch lukt het me nog niet volledig   smiley-red
Ik heb (denk ik) de tweet naar char's omgezet en dan in een while lus gezet.
Mijn probleem is dat hij volgens mij enkel de eerste letter verwerkt terwijl hij zou moeten in een grote loop gaat tot de karaters 'op' zijn.
Mijn test tweet is abaaabbb. Zodat ik alle 'eerste' letters kan verwerken en zo naar het het ASCCI-alfabet.
Waarschijnlijk is het de omzetting naar de chars waar het fout loopt.


Code:
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };
byte ip[] =  { 10,25,32,90}; //change this
byte subnet[] = {255,255,0,0}; //change this
byte gateway[] = {10,25,255,254}; //change this
byte dns[] = {10,56,1,1}; //change this
EthernetClient client;
String TwitterName ="jariboe"; //change this to your own twittername, or follow me ;-)
char tweet[140];
String SearchString ="<title>";
byte charsize;
char serverName[] = "api.twitter.com";  // twitter URL
int leD1 = 8;               
int leD2 = 7;
int leD3 = 6;
int leD4 = 5;

void setup() {
  pinMode(leD1, OUTPUT);
  pinMode(leD2, OUTPUT);
  pinMode(leD3, OUTPUT);
  pinMode(leD4, OUTPUT);
  // initialize serial:
  Serial.begin(9600);
  // attempt a DHCP connection:
  Ethernet.begin(mac, ip, dns, gateway, subnet);
  // connect to Twitter:
  delay(3000);
}

void loop(){
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
        TextFinder  finder( client,2 );
        Serial.println("making HTTP request...");
        // make HTTP GET request to twitter:
        client.print("GET /1/statuses/user_timeline.rss?screen_name=");
        client.print(TwitterName);
        client.println("&count=1 HTTP/1.1");
        client.println("HOST: api.twitter.com");
        client.println();
        Serial.println("sended HTTP request...");
    while (client.connected()) {
      if (client.available()) {
        Serial.println("looking for tweet...");
        SearchString = SearchString + TwitterName + ": ";
        charsize = SearchString.length() + 1;
        char StartHere[charsize];
        char EndHere[] = "</title>";
        SearchString.toCharArray(StartHere,charsize);
        if((finder.find("<item>")&&(finder.getString(StartHere,EndHere,tweet,140)!=0)))
        Serial.println(tweet);
                         char tweet;
                        {   while (tweet > 0);     // pas reageren als er iets is in de tweet zit
                           Serial.println("in de while lus");
                                             
                      if (tweet == 97 )                       //is de ingegeven waarde a dan... Telt enkel voor chars
                            {digitalWrite (leD1, HIGH);        //led 1 aan
                             delay (1000);                     // laatste actie aanhouden
                             digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             delay (100);
                              Serial.println("in de if lus");}
                      else
                            {digitalWrite (leD2, HIGH);        //led 2 aan
                              delay (1000);                     // laatste actie aanhouden
                              digitalWrite (leD2, LOW);         //led 2 uit en naar de volgende
                              delay (100);
                              {Serial.println("in de else lus");}
                     }}
                     
  break;
 
 
      }
    }
    delay(1);
    client.stop();
  }
  Serial.println("delay...");
  delay (60000);
  // don't make this less than 30000 (30 secs), because you can't connect to the twitter servers faster (you'll be banned)
  // off course it would be better to use the "Blink without delay", but I leave that to you.
}

En dit komt dan uit mijn serial monior
Quote
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
abaaabbb
in de while lus
in de else lus
delay...

Alvast bedankt voor jullie tijd!
10  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen on: May 08, 2012, 10:35:20 am
Omdat er aanvankelijk problemen waren met mijn Ethernet shield, had ik al een code uitgeschreven met de Serial Monitor
Code:
int leD1 = 8;                
int leD2 = 7;
int leD3 = 6;
int leD4 = 5;
                                        // de led als een integer instellen, dan kan hij verschillende waarden aan nemen
void setup ()
{
Serial.begin(38400);                    //de arduino kan seriele waarden lezen, met een snelheid van 9600 baud/s
  pinMode(leD1, OUTPUT);
  pinMode(leD2, OUTPUT);
  pinMode(leD3, OUTPUT);
  pinMode(leD4, OUTPUT);
}

void loop()                              // dit is de volledige bassiscode via de serial monitor, hier uit kan zeker al de lichtcode gevormd worden,
                                         // als er dan moet worden aangepast is het waarschijnlijk enkel de "val"
{   while (Serial.available() == 0);     // pas reageren als er iets is in de serail monitor
   char val = Serial.read();             // het teken direct inlezen
                                         //De "val" is weergegeven als een ASCII-waarde; dit kan zo blijven, want dan is er een aparte en al juiste onder verdeling    
if (val ==97)                            //is de ingegeven waarde a dan...
      {digitalWrite (leD1, HIGH);        //led 1 aan
       delay (1000);                     // laatste actie aanhouden
       digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
       delay (100);
      digitalWrite (leD1, HIGH);        //led 1 aan
       delay (1000);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
       digitalWrite (leD1, HIGH);       //led 1 aan
       delay (1000);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
       digitalWrite (leD1, HIGH);       //led 1 aan
       delay (1000);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100); }
Serial.println(val);                  
}

Ik hoopte dat ik dan gewoon die 'val' mocht gelijk zetten aan de 'client' dat het dan zou werken. Blijkbaar niet. Zelf snap ik echt niet meer waarom.
Bij de serialmonitor lees in principe toch ook een string die wordt doorgestuurd. Of zijn dit direct Char's ? Is er dan een simpel manier om de string 'client' naar Char's te brengen?
En nog een laatste vraagje is er een trukje om de refresh-rate (ik weet niet de officiele benamming) van twitter te omzeilen bij het testen? Want ik ben blijkbaar al meer dan 150 per uur mijn tweets aan het inlezen.
Mijn code nu:
Code:
/*
  Twitter Client with Strings
 
 This sketch connects to Twitter using an Ethernet shield. It parses the XML
 returned, and looks for <text>this is a tweet</text>
 
 You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield,
 either one will work, as long as it's got a Wiznet Ethernet module on board.
 
 This example uses the DHCP routines in the Ethernet library which is part of the
 Arduino core from version 1.0 beta 1
 
 This example uses the String library, which is part of the Arduino core from
 version 0019.  
 
 Circuit:
  * Ethern
  et shield attached to pins 10, 11, 12, 13

 
 
 created 21 May 2011
 by Tom Igoe
 
 This code is in the public domain.
 
 */
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {   0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };
IPAddress ip(10,25,32,60);

// initialize the library instance:
EthernetClient client;
// de tijd waarmee ge hercheckt word, best hoger dan 1440, want je mag maar zo'n 150 keer de status van twitter aanvragen per uur.
const int requestInterval = 6000
;  // delay between requests

char serverName[] = "api.twitter.com";  // twitter URL

boolean requested;                   // whether you've made a request since connecting
long lastAttemptTime = 0;            // last time you connected to the server, in milliseconds

String currentLine = "";            // string to hold the text from server
String tweet = "";                  // string to hold the tweet
boolean readingTweet = false;       // if you're currently reading the tweet

// de mogelijke variabelen om te schakelen benoemen
int leD1 = 8;                
int leD2 = 7;
int leD3 = 6;
int leD4 = 5
;

void setup() {
  // de leds als output benoemen
  pinMode(leD1, OUTPUT);
  pinMode(leD2, OUTPUT);
  pinMode(leD3, OUTPUT);
  pinMode(leD4, OUTPUT);
  
  // reserve space for the strings:
  currentLine.reserve(256);
  tweet.reserve(150);

// initialize serial:
  Serial.begin(9600);
  // attempt a DHCP connection:
  if (!Ethernet.begin(mac)) {
    // if DHCP fails, start with a hard-coded address:
    Ethernet.begin(mac, ip);
  }
  // connect to Twitter:
  connectToServer();
}

void loop()
{
  if (client.connected()) {
    if (client.available()) {
      // read incoming bytes:
      char inChar = client.read();
      // add incoming byte to end of line:
      currentLine += inChar;
      // if you get a newline, clear the line:
      if (inChar == '\n') {
        currentLine = "";
      }
      // if the current line ends with <text>, it will
      // be followed by the tweet:
      if ( currentLine.endsWith("<text>")) {
        // tweet is beginning. Clear the tweet string:
        readingTweet = true;
        tweet = "";
      }
      // if you're currently reading the bytes of a tweet,
      // add them to the tweet String:
      if (readingTweet) {
        if (inChar != '<') {
          tweet += inChar;
        }
        else {
          // if you got a "<" character,
          // you've reached the end of the tweet:
          readingTweet = false;
          Serial.println(tweet);  
          // close the connection to the server:
          client.stop();
        }
      }
    }  
  }
  else if (millis() - lastAttemptTime > requestInterval) {
    // if you're not connected, and two minutes have passed since
    // your last connection, then attempt to connect again:
    connectToServer();
  }
}

void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
     Serial.println("making HTTP request...");
  // make HTTP GET request to twitter:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=jaribeo&count=1 HTTP/1.1");
    client.println("HOST: api.twitter.com");
    client.println();

   if (client ==97)                   //werkt nog niet!
   //is de ingegeven waarde a dan...
      {digitalWrite (leD1, HIGH);        //led 1 aan
       delay (100);                     // laatste actie aanhouden
       digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
       delay (100);
      digitalWrite (leD1, HIGH);        //led 1 aan
       delay (100);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
       digitalWrite (leD1, HIGH);       //led 1 aan
       delay (100);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
  }
}
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}  

 
Ik heb een Uno als basis. Jullie kunnen me echt massa's helpen, ik ben geen programeur en probeer me het zelf te leren. Maar dat gaat soms veel te langzam  smiley-confuse
11  International / Nederlands / Re: Twitter Client=> naar eigen account veranderen on: May 08, 2012, 04:48:42 am
Ik heb het uiteindelijk gevonden, niet op https://dev.twitter.com/, want dat was te moeilijk voor mij. Gewoon door 3dagen te googlen.

Code:
void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    Serial.println("making HTTP request...");
  // make HTTP GET request to twitter:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=jariboe&count=1 HTTP/1.1");  // jariboe is de account naam, gewoon dit aanpassen en klaar is klaas.
    client.println("HOST: api.twitter.com");
    client.println();
  }
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}

Nu nog proberen mijn string deftig te verwerken.
12  International / Nederlands / Twitter Client=> naar eigen account veranderen [OPGELOST!] on: May 04, 2012, 04:58:27 am
Ik wil het twitterclient maken voor school. Maar ik vind niet hoe ik hem moet aanpassen. Nu heb ik al connectie met twitter en lees ik blijkbaar de tweets van een 'RusselOffical' uit.
De bedoeling zou zijn dat ik dan voor elke letter/cijfer/symbool uit de tweet een licht code maak.
bv A= Rood aan, Rood Aan, Rood aan, en dan B= Rood Aan, Rood Aan, en Blauw aan,...
Deze code wou ik gebruiken omdat hij gebruikt maakt van de DHCP om zijn IP-adres te bepalen en ik hem daardoor makkelijk op verschillende plaatsen kon aansluiten.

Code:
/*
  Twitter Client with Strings
 
 This sketch connects to Twitter using an Ethernet shield. It parses the XML
 returned, and looks for <text>this is a tweet</text>
 
 You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield,
 either one will work, as long as it's got a Wiznet Ethernet module on board.
 
 This example uses the DHCP routines in the Ethernet library which is part of the
 Arduino core from version 1.0 beta 1
 
 This example uses the String library, which is part of the Arduino core from
 version 0019.  
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 
 created 21 May 2011
 by Tom Igoe
 
 This code is in the public domain.
 
 */
#include <SPI.h>
#include <Ethernet.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };
IPAddress ip(192,168,1,20);

// initialize the library instance:
EthernetClient client;

const unsigned long requestInterval = 60000;  // delay between requests

char serverName[] = "api.twitter.com";  // twitter URL

boolean requested;                   // whether you've made a request since connecting
unsigned long lastAttemptTime = 0;            // last time you connected to the server, in milliseconds

String currentLine = "";            // string to hold the text from server
String tweet = "";                  // string to hold the tweet
boolean readingTweet = false;       // if you're currently reading the tweet

void setup() {
  // reserve space for the strings:
  currentLine.reserve(256);
  tweet.reserve(150);
  // initialize serial:
  Serial.begin(9600);
  // attempt a DHCP connection:
  Serial.println("Attempting to get an IP address using DHCP:");
  if (!Ethernet.begin(mac)) {
    // if DHCP fails, start with a hard-coded address:
    Serial.println("failed to get an IP address using DHCP, trying manually");
    Ethernet.begin(mac, ip);
  }
  Serial.print("My address:");
  Serial.println(Ethernet.localIP());
  // connect to Twitter:
  connectToServer();
}

void loop()
{
  if (client.connected()) {
    if (client.available()) {
      // read incoming bytes:
      char inChar = client.read();

      // add incoming byte to end of line:
      currentLine += inChar;

      // if you get a newline, clear the line:
      if (inChar == '\n') {
        currentLine = "";
      }
      // if the current line ends with <text>, it will
      // be followed by the tweet:
      if ( currentLine.endsWith("<text>")) {
        // tweet is beginning. Clear the tweet string:
        readingTweet = true;
        tweet = "";
      }
      // if you're currently reading the bytes of a tweet,
      // add them to the tweet String:
      if (readingTweet) {
        if (inChar != '<') {
          tweet += inChar;
        }
        else {
          // if you got a "<" character,
          // you've reached the end of the tweet:
          readingTweet = false;
          Serial.println(tweet);  
          // close the connection to the server:
          client.stop();
        }
      }
    }  
  }
  else if (millis() - lastAttemptTime > requestInterval) {
    // if you're not connected, and two minutes have passed since
    // your last connection, then attempt to connect again:
    connectToServer();
  }
}

void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    Serial.println("making HTTP request...");
    // make HTTP GET request to twitter:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino&count=1 HTTP/1.1");
    client.println("HOST: api.twitter.com");
    client.println();
  }
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}
13  International / Nederlands / Re: Arduino Uno + ethernet Shield = gaat nooit online on: May 04, 2012, 04:50:28 am
Het gaat, was blijkbaar mijn TP-kabel die stuk was.  smiley-grin Echt iets voor een noob zoals ik.  smiley-red
Zal proberen dit topic te verwijderen.

14  International / Nederlands / Arduino Uno + ethernet Shield = gaat nooit online on: May 03, 2012, 02:03:21 pm
Hallo,

Ik heb me een Arduino Uno en een bijpassend Ethernet shield gekocht. De bedoeling is dat ik hem ga gebruiken als een TwitterClient. http://arduino.cc/en/Tutorial/TwitterClient
Maar daarvoor moet ik hem eerst online krijgen natuurlijk.
Ik heb al wat rond gesurft en wat ik er van versta is dat ik best een vast IP-adres neem. Dat lukt me nog juist, ook het op laden er van de Arduino.
Dan zou ik hem in theorie moeten kunnen 'pingen' met comandopromt. Maar dat lukt niet. Ik wou dat proberen om zeker te zijn dat hij online was. Als er een beter idee is laat me maar weten.

Code:
    #include <SPI.h>
    #include <Ethernet.h>


    // the media access control (ethernet hardware) address for the shield:
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };
    //the IP address for the shield:
    byte ip[] = { 10, 25, 32, 80 };   

    void setup()
    {
      Ethernet.begin(mac, ip);
    }

    void loop () {}

kan iemand me helpen, aan de engels uitleggen geraak ik niet meer aan uit  smiley-eek-blue
Pages: [1]