INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 3 Bewertungen - 2 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Facebook LCD (Like Crystal Display) mit Ethernet Shield
02.12.2015, 23:05 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2015 23:15 von Wampo.)
Beitrag #1
Thumbs Up Facebook LCD (Like Crystal Display) mit Ethernet Shield
Hy zusammen, Exclamation

neue Vorstellung eines kleinen Vorprojekts (Spielerei mit dem Ethernet Shield)

Was macht es: Es zeigt Likes von Facebookseiten an! Big Grin

Das Projekt ist kein von mir erstelltes, es ist lediglich eine weiterentwicklung und eine Verbesserung eines schon vorhandenen Projekts.

Der Original Code hat bei mir nicht Funktioniert weil einige Zeilen falsch geschrieben waren. Ich habe diese geändert und nun funktioniert die abfrage auf Facebook.

   
Code:
// Bibliotheken einbinden
//================================================================================​=
#include <SPI.h>
#include <Ethernet.h>
#include <Adafruit_NeoPixel.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

// LCD Configuration          
//================================================================================​=
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define ZEICHEN 20
#define ZEILEN 4

// NeoPixel Configuration          
//================================================================================​=
#define NUMPIX 24
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIX,PIN,NEO_GRB + NEO_KHZ800);

// Ethernet Configuration          
//================================================================================​=
// IP Configuration in Windows unter Start --> Suche --> "CMD" --> "ipconfig/all"
byte     mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  //MAC Adresse vom EthernetShield
byte      ip[] = { xxx, xxx, xxx, xxx};                    //IP  Adresse vom EthernetShield
byte gateway[] = { xxx, xxx, xxx, xxx };                    //Lokale Gateway Adresse
byte  subnet[] = { xxx, xxx, xxx, xxx };                    //Lokale Subnet  Adresse

char server[] = "graph.facebook.com";         // facebook URL, facebook IP: 31.13.93.3

EthernetClient client;

// Variablen          
//================================================================================​=
const int SDselect = 4;
const int ETHselect = 10;

const unsigned long requestInterval = 10000;  // Abfrageinterval
int port = 80;                                // Port von Facebook Server (viele HTTP --> PORT 80)
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 fbcount = "";                          // string to hold the tweet
boolean readingFbcount = false;               // if you're currently reading the tweet
int previouscount;

void setup(){
  pinMode(ETHselect, OUTPUT);                 // Chipselect für EthernetShield und SD Karte
  digitalWrite(ETHselect, LOW);               // Chipselect auf 'LOW' Aktiviert in dem fall Ethernetmodul
  pinMode(SDselect, OUTPUT);
  digitalWrite(SDselect, HIGH);               // Deaktiviert hier dann SD Karten Modul
  
  currentLine.reserve(256);
  fbcount.reserve(100);

   lcd.begin(ZEICHEN,ZEILEN);                 // LCD mit Zeichen und Zeilen
   SPI.begin();                               // SPI Starten für kommunikation zwischen Arduino und Ethernetshield
   strip.begin();                             // WS2812b Stripe Starten
   strip.setBrightness(5);                    // WS2812b Stripe Helligkeit in PWM (0-255)
   delay(1000);                               // Ethernetmodul zeit geben zum "Hochfahren"
  
  if ( !Ethernet.begin(mac)) {                // Ethernet starten und abfragen ob eine Verbindung besteht
    error();                                  
     while ( true ) ;
  }
  lcd.setCursor(1,3);
  lcd.print("IP: ") ;
  lcd.print(Ethernet.localIP()) ;
  
  startup();
  connectToServer();                          // mit Server Verbinden
}

void loop(){

  if (client.connected()) {
     if (client.available()) {
      char inChar = client.read();                
        currentLine += inChar;

      // if you get a newline, clear the line:
      if (inChar == '\n')
      {
        currentLine = "";
      }
      
      // if the current line ends with <fan_count>, it will
      // be followed by the tweet:
      if (currentLine.endsWith("<fan_count>")){                  
        
        // Likes gefunden, String Löschen
        readingFbcount = true;
        fbcount = "";
      }
      // if you're currently reading the bytes of the facebook count,
      // add them to the tweet String:
      if (readingFbcount)
      {
        if (inChar != '<' )
        {
          fbcount += (char)inChar;
        }
        else
        {
          // if you got a "<" character,
          // you've reached the end of the facebook
          readingFbcount = false;
          client.stop();
          fbcount.remove(0, 1);         // erstes Zeichen vom String Löschen,
      int count = fbcount.toInt();      // convertierung von String in Integer
          lcd.setCursor(0,0); lcd.print("Spotted:Dorfen Count");
          lcd.setCursor(5,1); lcd.print(count); lcd.print(" "); lcd.print("LIKES ");
          if (count > previouscount){
            gotnewlike();
       }
       previouscount = count;
      }
     }
    }
   }
  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(){
  
    client.stop();                          // Client erst Stoppen, Fehlervermeidung
    
    lcd.setCursor(0,2);
    lcd.print("Connection to SERVER");
    delay(250);  //make Info Readable
   if (client.connect(server, port)) {      // mit Client Verbinden
    // Serial.println("HTTP Request...");
    // make HTTP GET request to Facebook:
    client.println("GET /restserver.php?format=xml&method=fql.multiquery&pretty=0&queries={%22page_info%22%3A%22select%20name%2Cfan_count%2Cpage_url%2Ctype%20​from%20page%20where%20page_id%20IN%20(697796566981295)%22}&sdk=joey HTTP/1.1");
    client.println("HOST: graph.facebook.com");
    client.println("Connection: close");    // Verbindung beenden
    client.println();
    
    lcd.setCursor(0,2);
    lcd.print("Connection   DONE   ");
        ok();
  lastAttemptTime = millis();
  
}else {
    // if you couldn't make a connection:
    lcd.setCursor(0,2);
    lcd.print("Connection  FAILED  ");
        error();
   }
}

void startup(){
  //lcd.setCursor(0,0);
  //lcd.print("LED Test");
  //lcd.setCursor(0,1);
  //lcd.print("GREEN Color");
        theaterChase(strip.Color(0, 255, 0), 50); // Green
  //lcd.setCursor(0,2);
  //lcd.print("RED Color");
        theaterChase(strip.Color(255, 0, 0), 50); // Red
  //lcd.setCursor(0,3);
  //lcd.print("BLUE Color");
        theaterChase(strip.Color(0, 0, 255), 50); // Blue
  //lcd.setCursor(0,0);
  //lcd.print("Clear Ring & Start!!");
  clearstrip();
  delay(100);
}
void ok(){
  for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 0, 255, 0);
      }
      strip.show();
        delay(50);
          clearstrip();
}        
void error(){
  for (int d=0; d < 4; d++){
     for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 255, 0, 0);
      }
      strip.show();
        delay(100);
          clearstrip();
            delay(250);
       }
}
void gotnewlike(){
  for (int d=0; d < 10; d++){
     for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 0, 0, 255);
      }
      strip.show();
        delay(500);
          clearstrip();
            delay(250);
       }
}
void theaterChase(uint32_t c, uint8_t wait){
  for (int j=0; j<10; j++) {  //do 10 cycles of chasing
    for (int q=0; q < 3; q++) {
      for (int i=0; i < NUMPIX; i=i+3) {
        strip.setPixelColor(i+q, c);    //turn every third pixel on
      }
      strip.show();
    
      delay(wait);
    
      for (int i=0; i < NUMPIX; i=i+3) {
        strip.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}
void clearstrip(){
  for (int i=0; i < NUMPIX; i++) {
        strip.setPixelColor(i, 0, 0, 0);    //turn Strip to "BLACK"
      }
      strip.show();
}
uint32_t wheel(byte WheelPos){
  if(WheelPos < 85) //RED
  {
    return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  }
  else if(WheelPos < 170) //BLUE
  {
    WheelPos -= 85;
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  else {
    WheelPos -= 170;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  7 Zoll Display und NRF24 Propleme schlappy82 15 420 28.11.2016 17:10
Letzter Beitrag: hotsystems
  motor shield hankewitz 2 220 24.11.2016 08:11
Letzter Beitrag: Binatone
  Grafiken auf OLED-Display darstellen scritch 8 520 17.11.2016 13:33
Letzter Beitrag: scritch
  Graphisches Barometer mit e-Paper Display Bender 9 2.416 06.11.2016 06:10
Letzter Beitrag: Bender
Rainbow Wetterstation mit LC-Display I2C --> Feuchte, Temp, Wind, Druck, Tau, Tendenz Wampo 25 36.383 24.10.2016 19:05
Letzter Beitrag: Wampo
  Arduino+Ethernet+RFID+MySQL RonSH 12 671 13.10.2016 22:32
Letzter Beitrag: Tommy56
  Arduino mit DFRobot DMX Shield - Wer hilft mir auf die Sprünge??? colmans 1 627 11.01.2016 20:23
Letzter Beitrag: fraju
  E-Paper Display Xtremefly 7 2.992 22.07.2015 11:48
Letzter Beitrag: Xtremefly
  Display 5" Xwill 26 10.506 04.06.2015 08:39
Letzter Beitrag: DaniDD
  Arduino Ethernet Kamera 4711engel 3 2.512 03.06.2015 16:23
Letzter Beitrag: 4711engel

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste