Ethernet Library blockiert Pins (außer 13, 12, 11, 10) ?!?!


hallo..

ich verzweifle gerade einen der simpelsten sachen überhaupt. ich möchte einfach einen (!!!) pin auf high / 1 schalten... doch hieran scheitere ich gerade kläglich... :~

wenn ich z.b. den blink-sketch aufspiele und die "blink"-pins durchwechsel geht alles.. ( = keine pins defekt)

wenn ich jedoch diesen code aufspiele, der ethernet, sd und spi einbindet, finde ich keinen pin mehr den ich hochschalten kann???? das ethernet-shield ist nichtmal angeschlossen. geschaltet werden soll der relay pin.. ( relay breakout board.. mit blink programm funktioniert es super..)

code: [select]
#include <spi.h>
#include <ethernet.h>
#include <sd.h>

int redpin = 3;
int greenpin = 5;
int bluepin = 6;
int relay = 8;

byte mac[] = { 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed };
ipaddress ip(192,168,178,77);

ethernetserver server(80);

file webfile;

void setup() {
  serial.begin(9600);
 
  ethernet.begin(mac, ip);
  server.begin();
  serial.print("server @ ");
  serial.println(ethernet.localip());
 
  pinmode(redpin, output);
  pinmode(greenpin, output);
  pinmode(bluepin, output);
  digitalwrite(relay, high);
  digitalwrite(10, high);
  if (!sd.begin(4)) {
     return;
  }

  setcolour(0,0,0);
}

void loop() {
  int bufsiz = 255;
    int index = 0;
    digitalwrite(relay, high);
    char clientline[bufsiz];
    ethernetclient client = server.available();
    if (client) {
        boolean currentlineisblank = true;
        index = 0;
        while (client.connected()) {
            if (client.available()) {
                char c = client.read();
                if (c != '\n' && c != '\r') {
                  clientline[index] = c;
                  index++;
                  if (index >= bufsiz)
                    index = bufsiz -1;

                  continue;
                }
                clientline[index] = 0;
                char* filename = processfile(clientline);
                serial.print("requested: ");
                serial.println(filename);
                /* setup ajax requests here:
                 * these direct output values requested
                 * ajax.
                 */
                if (strstr(clientline, "get /?rgb=") != 0) {
                  char* rgb;
                  rgb = clientline + 10;

                  char *str;
                  char *p = rgb;
                  int rgbi[3];
                  int index=0;
                  while ((str = strtok_r(p, ",", &p)) != null) { // delimiter semicolon
                    rgbi[index] = atoi(str);
                    index++;
                    serial.println(str);
                  }
                  setcolour(rgbi[0],rgbi[1],rgbi[2]);
                  //serial.println(rgb);
                  break;
                }

                if (sd.exists(filename)) {
                   code200(client);
                   webfile = sd.open(filename);
                   if (webfile) {
                       while(webfile.available()) {
                           client.write(webfile.read());
                       }
                       webfile.close();
                   }
                   break;
                } else {
                    if (strlen(filename) < 2) {
                      webfile = sd.open("index.htm");
                       if (webfile) {
                           while(webfile.available()) {
                               client.write(webfile.read());
                           }
                           webfile.close();
                       }
                    } else {
                      client.println("http/1.1 404 not found");
                      client.println("content-type: text/html");
                      client.println("connection: close");
                      client.println();
                      client.println("<html><head><title>404 - not found</title></head><body><h1>404 - not found</h1></body></html>");
                      break;
                    }
                }
                break;
            }
        }
        delay(1);
        client.stop();
    }
}

void setcolour(int r,int g,int b) {
   r = map(r, 0, 255, 255, 0);
   g = map(g, 0, 255, 255, 0);
   b = map(b, 0, 255, 255, 0);
   analogwrite(redpin, r);
   analogwrite(greenpin, g);
   analogwrite(bluepin, b);
}

void code200(ethernetclient client) {
    client.println("http/1.1 200 ok");
    client.println("content-type: text/html");
    client.println("connection: close");
    client.println();
}

char* processfile(char clientline[255]) {
   char *filename;
   filename = clientline + 5;
  (strstr(clientline, " http"))[0] = 0;
  return filename;
}


sd karte und webserver gehen mit eingestecktem shield auch ohne probleme. kann jemand bitte diesen code aufspielen und mir vielleicht sagen woran es liegt??

pins 6,5,3 kann man nicht verwenden, da ich diese für pwm --> rgb steuerung benötige.. angeschlossen zum relay schalten war nur das breakout board ( breakout-board---> arduino uno////vcc--> 5v, gnd ---> gnd, in2 ---> relay-pin.., in1--> nicht verwendet.)


schon mal vielen dank. vielleicht kann mir jemand diesen hoffentlich leichtsinnigen fehler erläutern... ich bin den code nun bereits mehrfach durchgegangen und verstehe es solangsam echt nimmer.... :smiley-eek-blue:

grüße

mir ist nicht klar, wo dein problem liegt. funktioniert dieser sketch nun oder nicht? im sketch schaltest du ja keinen pin auf high. habe ich etwas falsch verstanden? oder suchst du einfach einen freien pin? #2 sollte frei sein, wenn ich das richtig überblicke.


Arduino Forum > International > Deutsch (Moderator: uwefed) > Ethernet Library blockiert Pins (außer 13, 12, 11, 10) ?!?!


arduino

Comments

Popular posts from this blog

VIDIOC_S_FMT error 16, Device or resource busy - Raspberry Pi Forums

using a laptop skeleton to build a pi laptop - Raspberry Pi Forums

Forum for Joomla? - Joomla! Forum - community, help and support