Arduino Forum upgrade scheduled for Monday, October 20th, 11am-4pm (CEST). Sorry for the inconvenience!
Pages: 1 [2]   Go Down
Author Topic: Bits einlesen - wie mache ich das am Besten?  (Read 2613 times)
0 Members and 1 Guest are viewing this topic.
Germany, Osnabrück
Offline Offline
God Member
*****
Karma: 30
Posts: 676
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bei _Signal_ms_puffer 10 ist es klar das kein gültiges Signal mehr raus kommt.
Das liegt daran das bei 10 die Signale ineinander übergehen zwischen Low und High durch die Zeiten  (+-10  von 32 =>  22-42,  von 46 => 36-56)

Hier mal ein Script zum ausgeben, wobei es könnte sein das die Serial.print funktion im Interrupt das Script so dermaßen bremst, dass man das erst in einen Array schreiben muss und dann ausgibt.

Code:
unsigned long signal_time =0;


/*
 * Interrupt Funktion, wird von 0->1 wechsel ausgelöst
 */
void Get_Bit_Signal()
{
  //interne Variable wird, als Berechnungshilfe verwendet
  unsigned int time = 0;
   
  time = millis() - signal_time;
  signal_time = millis();
  Serial.println(time); 
}

void setup()
{
  // Pin x nicht 0 einfach mal nachschauen
  // Interrupt von  0 -> 1 = rising
  attachInterrupt(0, Get_Bit_Signal, CHANGE);
 
  // wichtig fuer das Beispiel weiter unten
  Serial.begin(9600); 
}

void loop()
{
}
Logged

0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das klappte auch nicht so richtig mit dem Messen... Jetzt habe ich das hier kurz zusammengestrickt:

Code:
int pin = 2;
unsigned long duration;

void setup()
{
  pinMode(pin, INPUT);
    Serial.begin(9600);
    Serial.println("Give it to me...");
}

void loop()
{
  duration = pulseIn(pin, HIGH);
  if ((duration>600)&&(duration<1000)) Serial.print("1,");
  if ((duration>1200)&&(duration<4000)) Serial.print("0,");
}

Nun kommt das heraus für 21,3° und 69%:

Quote
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,1,1,1,0,1,0,0,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,1,1,1,0,1,0,0,1,1,1,1,1,

"Vorspiel"                                          Vorzeihen?      Temp                                   Feucht                               Keine Ahnung
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,   1,1,1,1,   1,1,0,0,1,0,0,0,0,1,0,0,   1,0,0,1,0,1,1,0,0,0,0,0,     1,1,1,0,1,0,0,1,1,1,1,1,

Jetzt möchte ich versuchen Deine vorher herausgefundene Bit-Schieberei durchzuführen, sodass ich die Werte angezeigt bekomme... Drückt mir die Daumen smiley

« Last Edit: August 03, 2011, 03:30:35 pm by DE8MSH » Logged


0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

So, habe mal kräftig mitgeloggt:

Code:
000000000000000000   1111   100010000100   011001100000   010011001111
000000000000000000   1111   100010000100   011001100000   010011001111

000000000000000000   1111   100010000100   011001100000   010011001111
000000000000000000   1111   100010000100   011001100000   010011001111

000000000000000000   1111   100010000100   011001100000   010011001111
000000000000000000   1111   100010000100   011001100000   010011001111

000000000000000000   1111   100010000100   101001100000   000000111111
000000000000000000   1111   100010000100   101001100000   000000111111

000000000000000000   1111   100010000100   101001100000   000000111111
000000000000000000   1111   100010000100   101001100000   000000111111

000000000000000000   1111   100010000100   011001100000   010011001111
000000000000000000   1111   100010000100   011001100000   010011001111

000000000000000000   1111   100010000100   101001100000   000000111111
000000000000000000   1111   100010000100   101001100000   000000111111

000000000000000000   1111   100010000100   101001100000   000000111111
000000000000000000   1111   100010000100   101001100000   000000111111

000000000000000000   1111   100010000100   101001100000   000000111111
000000000000000000   1111   100010000100   101001100000   000000111111

000000000000000000   1111   100010000100   101001100000   000000111111
000000000000000000   1111   100010000100   101001100000   000000111111

000000000000000000   1111   100010000100   101001100000   000000111111
000000000000000000   1111   100010000100   101001100000   000000111111

000000000000000000   1111   100010000100   001001100000   111101111111
000000000000000000   1111   100010000100   001001100000   111101111111

000000000000000000   1111   100010000100   001001100000   111101111111
000000000000000000   1111   100010000100   001001100000   111101111111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

000000000000000000   1111   000010000100   101001100000   111101111111
000000000000000000   1111   000010000100   101001100000   111101111111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

000000000000000000   1111   000010000100   001001100000   011100011111
000000000000000000   1111   000010000100   001001100000   011100011111

Es werden offensichtlich alle Daten 2x gesendet. Ist mir bei der Audacity-Auswertung garnicht aufgefallen. Naja, jedenfalls nehme ich bei der letzten 12er Kombination Checksumme oder so an. Kam aber aufrgrund Nachdenkens nicht auf der Algho...
Logged


Pages: 1 [2]   Go Up
Arduino Forum upgrade scheduled for Monday, October 20th, 11am-4pm (CEST). Sorry for the inconvenience!
Jump to: