bitte hilfe kann kaum programmieren


hey allerseits. ich interessiere mich sehr für arduino und alles damit zu ermöglichen ist.
ich möchte alles lernen und habe auch schon fast jeden board usw bestellt man brauchen kann.

aber als erstes habe ich mir etwas zur aufgabe gemacht, dem ich nicht gewachsen bin ^^
habe es von einer seite und habe es 1:1 kopiert. sehr interessantes projekt . habe mir das teil welches ich dazu brauche sogar doppelt aus usa bestellt ;)

hier der link http://colligomentis.com/2012/05/16/hid-reader-arduino-rfid-card-catcher/

auf dieser seite ist auch der link zu den code der vorgegeben war und der autor hat auch geschrieben das der code chaotisch ist und er selbst nicht der programmierprofi ist..

naja ich hab den code probiert, habe etliche sachen geändert und trotzdem haut es nicht hin.. es harpert immer sattz "sdfat sd;"  der befindet sich gleich beginn in der 8en zeile .

ich muss den code auf 3 posts aufteilen da ich ja nur 9500 zeichen schreiben kann :/

könnt ihr mir eventuell helfen??????
wäre sehr nett wenn ihr mir ein paar infos geben könntet und vielleicht sogar etwas erklären code nicht passen könnte.
über das projekt braucht ihr mir keine infos geben da weiß ich sehr wohl worum es geht ;)

code: [select]
#include <softwareserial.h>
#include <sdfat.h>

// da das lcd nicht sendet daten zurück den arduino, sollten wir erst definieren die txpin
#define txpin 4 // weiß draht von serien-lcd-bildschirm
const int lcddelay = 10; // konservativ, 2 tatsächlich funktioniert

// sd-karte variables
const uint8_t chipselect = 10; // cs sd pin 10 on arduinosdfat sd;
sdfat sd; // file system object sd card    sdfat32d;
sdfile file; // file object      
char datafile[] = "cards.txt"; // file save card ids to

unsigned long bitholder1 = 0;
unsigned long bitholder2 = 0;
unsigned int bitcount = 0;
unsigned long cardchunk1 = 0;
unsigned long cardchunk2 = 0;
int parity = 0;
long previousmillis = 0; // wird letzte mal aktualisiert wurde lcd speichern
long intervall = 3000; // intervall für die anzeige zurückzusetzen (millisekunden)

// start-code für data0 und data1 interrupts, um die binären daten von der karte zu bekommen
// aus welchem ??grund, wenn der mikro data1 und data0 kabel müssen rückgängig gemacht werden
void data1(void);
   bitcount + +;
   if(bitcount < 23) {
     bitholder1 = bitholder1 << 1;
   }
   else{
     bitholder2 = bitholder2 << 1;
   }
}

void data0(void) {
  bitcount + +;
  if(bitcount <23){
     bitholder1 = bitholder1 << 1;
     bitholder1 |= 1;
  }
  else{
    bitholder2 = bitholder2 << 1;
    bitholder2 |= 1;
  }
}

// end code data0 und data1

// beginn code lcd

softwareserial lcd(0, txpin);
//
void clearlcd(){
lcd.write(0xfe); // befehl flagge
lcd.write(0x01); // clear befehl.
delay(lcddelay);
}

// end-code für lcd

// start-code für sd-karte

void writesd(){
 
   // die datei öffnen. beachten sie, dass nur eine datei kann zu einer zeit offen,
   // müssen sie diese vor dem Öffnen einer anderen schließen.
   ofstream file(datafile, ios :: out | ios :: app);
 
   // wenn die datei vorhanden ist, es zu schreiben:
   if(file){
     file << bitcount;
     file << "bit card:";
     file << hex << cardchunk1;
     file << hex << cardchunk2;
     file << ", bin:";
     for(int = 19; i> = 0; -){
       datei << bitread(cardchunk1, i);
     }
     for(int = 23; i> = 0; -){
       file << bitread(cardchunk2, i);
     }
     file << endl;
     
     // print die serielle schnittstelle zu
      serial.println("schrieb daten auf sd-karte");
   }
else{
clearlcd();
lcd.print("error writing file");
}
}

// end-code für sd-karte

void setup(){
 
serial.begin(57600);
 
 clearinterrupts();
 
 attachinterrupt(0, data0, rising); // data0 (grün) auf hid leser, pin 2 auf arduino
 attachinterrupt(1, data1, rising); // data1 (weiß) auf hid leser, pin 3 auf arduino
 delay(10);
 // initialisieren lcd-bildschirm
/ / pinmode(txpin, output);
/ / lcd.begin(9600);
 
 // stellen sie sicher, dass die standard-chip-select-pin 10 eingestellt ist
 // ausgabe, auch wenn sie sie nicht benutzen:
 // setup ausgangs-pin auf sd-karte
 pinmode(10, output);
 pinmode(chipselect, output);
 
 // initialisierung sd-karte
 while(!sd.begin(chipselect, spi_half_speed)) {
   serial.println("no sd card!");
 }
 // auskommentiert ohne lcd
if(!sd.begin(chipselect, spi_half_speed)) {
clearlcd();
lcd.print("problem mit sd-karte");
 }
else{
clearlcd();
lcd.print("sd-karte initialisiert.");
 }

 // schalten sie onboard led betriebsbereitschaft anzuzeigen
 digitalwrite(17, low);
   
serial.println("reader_0001");
 
 // reset und machen sie sich bereit für eine karte
 bitcount = 0; bitholder1 = 0; bitholder2 = 0;
}


void loop(){
   if (millis() - previousmillis> interval) {
     bitcount = 0; bitholder1 = 0; bitholder2 = 0; // falls etwas schief gelaufen ist, klar die puffer
     previousmillis = millis(); // erinnern, das letzte mal, dass wir blinzelte die led
clearlcd();
lcd.print("present card or enter pin");
     
   }
   
   // prüfen, ob ein gültiger empfangenen bits länge eine karte sein, sind
   if(bitcount> = 26){
       delay(100);
       
       // aufruf funktion für unsere beiden brocken karte werte zu erhalten
       getcardvalues();
       

code: [select]
        // debug stuff
serial.print("bitholders: ");
serial.print(bitholder1, bin);
serial.print(", ");
serial.println(bitholder2, bin);
serial.print("cardchunk1: ");
serial.println(cardchunk1, bin);
serial.print("cardchunk2: ");
serial.println(cardchunk2, bin);
serial.print("card value (bin): ");
serial.print(cardchunk1, bin);
serial.println(cardchunk2, bin);
serial.print("card value (hex): ");
serial.print(cardchunk1, hex);
serial.println(cardchunk2, hex);
       
        // drucken sie die karte werte auf den lcd-bildschirm
clearlcd();
lcd.print(bitcount);
lcd.print(" bit card:    ");
lcd.print(cardchunk1, hex);
lcd.print(cardchunk2, hex);
       
        //schreibe die karte werte auf die sd-karte
        writesd();
       
        // flash-onboard-led, um anzuzeigen, karte lesen
        digitalwrite(17, high);
        delay(100);
        digitalwrite(17, low);
       
        // reset und machen sie sich bereit für eine andere karte
        bitcount = 0; bitholder1 = 0; bitholder2 = 0;
        previousmillis = millis();
        delay(100); // verlängern sie dies, wenn sie die karte wert auf dem lcd-bildschirm mehr sehen wollen
    }
}

// funktion, um interrupts zu löschen und bereiten sie für den einsatz
void clearinterrupts(){
  // die unterbrechung in den atmel prozessor vermasselt die ersten negativen impuls wie die eingänge sind bereits hoch,
  // das gibt einen impuls jedem leser eingabezeile, um die interrupts richtig funktioniert.
  // dann räumen die leser variablen.
  // die leser sind offener kollektor sitzen normalerweise in einer ein, ist dies ok
  for(int = 2; <4; + +){
    pinmode(i, output);
    digitalwrite(i, high); // enable interner pull einen ein
    digitalwrite(i, low); // deaktivieren interner pull verursacht null und damit einen interrupt
    pinmode(i, input);
    digitalwrite(i, high); // enable interne pull-up
  }
  delay(10);
}

// funktion, um die karte wert (bitholder1 und bitholder2) auf die notwendige array angehängt werden dann tranlate dass zu
// die beiden stücke für die karte wert ausgegeben
void getcardvalues(){
  switch (bitcount) {
    case 26:
        // example of full card value
        / / |> preamble <| |> actual card value <|
        //  000000100000000001 11 111000100000100100111000
        / / |> write chunk1 <| |> write chunk2 <|
       
       for(int = 19; i> = 0; i--) {
          if(i == 13 | | == 2){
            bitwrite(cardchunk1, i, 1); // schreiben der präambel 1. bis 13. und 2. bits
          }
          else if(i> 2){
            bitwrite(cardchunk1, i, 0); // schreiben der präambel 0 für alle anderen bits über 1
          }
          else{
            bitwrite(cardchunk1, i, bitread(bitholder1, + 20)); // schreiben restlichen bits cardchunk1 von bitholder1
          }
          if(i <20) {
            bitwrite(cardchunk2, + 4, bitread(bitholder1, i)); // schreibe die restlichen bits bitholder1 zu cardchunk2
          }
          if(i <4){
            bitwrite(cardchunk2, i, bitread(bitholder2, i)); // schreiben sie die verbleibenden bisschen cardchunk2 mit bitholder2 bits
          }
        }
        break;

    case 27:
       for(int = 19; i>= 0; i--){
          if(i == 13 | | == 3){
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 3) {
            bitwrite(cardchunk1, i, 0);
          }
          else{
            bitwrite(cardchunk1, i, bitread(bitholder1, + 19));
          }
          if(i <19) {
            bitwrite(cardchunk2, + 5, bitread(bitholder1, i));
          }
          if(i <5) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 28:
       for(int = 19; i>= 0; i--) {
          if(i == 13 | | == 4){
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 4) {
            bitwrite(cardchunk1, i, 0);
          }
          else{
            bitwrite(cardchunk1, i, bitread(bitholder1, + 18));
          }
          if(i <18) {
            bitwrite(cardchunk2, + 6, bitread(bitholder1, i));
          }
          if(i <6) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 29:
       for(int = 19; i>= 0; i--) {
          if (i == 13 | | == 5) {
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 5) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 17));
          }
          if(i <17) {
            bitwrite(cardchunk2, + 7, bitread(bitholder1, i));
          }
          if(i <7) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 30:
       for(int = 19; i>= 0; i--) {
          if(i == 13 | | == 6) {
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 6) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 16));
          }
          if(i <16) {
            bitwrite(cardchunk2, + 8, bitread(bitholder1, i));
          }
          if(i <8) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 31:
       for(int = 19; i>= 0; i--) {
          if(i == 13 | | == 7) {
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 7) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 15));
          }
          if(i <15) {
            bitwrite(cardchunk2, + 9, bitread(bitholder1, i));
          }
          if(i <9) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 32:
       for(int = 19; i>= 0; i--) {
          if(i == 13 | | == 8) {
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 8) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitrea(bitholder1, + 14));
          }
          if(i <14) {
            bitwrite(cardchunk2, + 10, bitread(bitholder1, i));
          }
          if(i <10) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 33:
       for(int = 19; i>= 0; i--) {
          if(i == 13 | | == 9) {
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 9) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 13));
          }
          if(i <13) {
            bitwrite(cardchunk2, + 11, bitread(bitholder1, i));
          }
          if(i <11) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

     case 34:
       for(int = 19; i>= 0; i--) {
          if(i == 13 | | == 10) {
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 10) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 12));
          }
          if(i <12) {
            bitwrite(cardchunk2, + 12, bitread(bitholder1, i));
          }
          if(i <12) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 35:
       for(int = 19; i>= 0; i--) {
          if(i == 13 | | == 11) {
            bitwrite(cardchunk1, i, 1);
          }
          else if(i> 11) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 11));
          }
          if(i <11) {
            bitwrite(cardchunk2, + 13, bitread(bitholder1, i));
          }
          if(i <13) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 36:
       for(int = 19; i> = 0; i--) {
          if(i == 13 | | == 12){
            bitwrite(cardchunk1, i, 1);
          }
          else if (i> 12) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 10));
          }
          if (i <10) {
            bitwrite(cardchunk2, + 14, bitread(bitholder1, i));
          }
          if (i <14) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;

    case 37:
       for(int = 19; i>= 0; i--) {
          if (i == 13) {
            bitwrite(cardchunk1, i, 0);
          }
          else {
            bitwrite(cardchunk1, i, bitread(bitholder1, + 9));
          }
          if(i <9) {
            bitwrite(cardchunk2, + 15, bitread(bitholder1, i));
          }
          if(i <15) {
            bitwrite(cardchunk2, i, bitread(bitholder2, i));
          }
        }
        break;
  }
  return;
}


Arduino Forum > International > Deutsch (Moderator: uwefed) > bitte hilfe kann kaum programmieren


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

Rasperry Wifi LAN Controller - Raspberry Pi Forums

Unlock car with bluetooth and car key