Loading...
  Show Posts
Pages: [1] 2
1  International / Deutsch / Re: Android Handy mit Bluetooth: => Firmware übertragen on: January 30, 2013, 05:07:33 pm
Vielleicht zu einfach, aber kann man nicht einfach den Hardware resetknopf mit gnd verbinden, wenn man mit dem Uploaden des Sketches fertig ist??

Das wäre dann genau eine Lötstelle auf dem Arduino selbst die an DigitalPin XY angesteuert wird und via 3-Fuß Transistor dann auf GND gebracht wird smiley

Gruß Flo
2  International / Deutsch / Re: Projekt: Arduino in Haus und Garten on: January 30, 2013, 04:44:46 pm
Hallo,

ein Ähnliches Projekt habe ich auch in meiner Planung. Ich will zum Beispiel für mein Zimmer im Haus einen Arduino Server installieren. Denke da auch an einen 1-Wire Temperatursensor der da auch so 5-10 M entfernt aus dem Fenster hängen sollte.

Sowas sollte locker realisierbar sein oder sehe ich das schon falsch?? hast du da schon erfahrungen sammeln können wegen der Strecke?
Eine Idee für deine Übertragung wäre auch die einer via optischer Lichtleiter, denen große entfernungen nichts ausmachen und auch recht dünne kabel sein können. Da könntest du eventuell sogar nur einen Arduino brauchen ^^


Ich habe auch noch in Planung Fenstermagnet Klips zu befestigen, die dann zum beispiel bei 2 Tage ungeöffnetem Zustand alarm via Twitter schlagen. Eine LED leiste, die sich farblich verändern kann steht auch ganz oben auf meiner to-do liste. Um diese steuern zu können bräuchte ich aber auch gut 2-5 m Kabel an den Verschiedenen Abschnitte. Sollten solche entfernungen realisierbar ein? Unteranderem müsste da 12V durchgeschleußt werden.


Eine Idee / frage wäre noch, wie die deine Daten dann abrufst? Man könnte da jetzt zum beispiel auch eine Smartphone Steuerung drauf aufbauen. Das ist eines meiner Ziele, für Apple geräte zumindest smiley-wink

Gruß Flo
3  International / Deutsch / Re: Array Problem - Allgemeines Problem mit if in Verbindung von einem A-Sensor on: January 30, 2013, 04:25:38 pm
Ah, danke für die Erleuchtung, euch beiden  smiley-wink

Hab jetzt noch ein bisschen rumbasteln und ausprobieren müssen und bin nun zu diesem Ergebnis in der Ausgabe gekommen:

Quote
rlo
?flo
???
e
?
?Xw
?f
e
?n?
e
o
?flo
?flo
?flo
?flo

Ich hab immer "flo" per Handy geschickt. Ab und zu staut sich da dann leider doch noch irgendwelche fehler an was dann zu den mittleren Ergebnissen geführt hat. Auch kommt es mal vor, dass mitten im f (..-.) ein e geprinted wird. (das liegt aber an der iPhone lampe die beim erst start immer erst kurz zuckt um "warm" zu laufen. Ist natürlich quatsch, dass sie warm laufen muss aber das ist bei jeder iPhone App mit LED Torch leider so, daher eher ein Hardware bzw Softwarefehler in der Firmware des iPhone. Wie dem auch sei... )

Erst ging es garnicht. Dann hab ich mir den Code nochmal von Michael_x angeschaut. Mit dem war ich von anfang an nicht ganz zu frieden, da ich Ihn nicht verstanden hab.. smiley-grin Irgendwas war mir da gleich am anfang nicht so ganz richtig.. Er hatte einen denkfehler mit dem Signal 1 und 0. Somit musste das "innere" / die Auswertung etc von punkt, pause, strich mit einander vertauscht werden, damit der Code überhaupt wirken kann.

Man kann ja keine pause messen und dann aus der Pause ein Zeichen ermitteln smiley-grin smiley-grin


Nachdem ich den Fehler gefunden hatte, wurde der letzte buchstabe nie ausgegeben, da mein Code in der while-Schleige hing... Daher hab ich nun in die while-Schleife die Ausgabe gesetzt, wenn die Zeit über einen gewissen rahmen (2 Sec) geht.
Kleiner nebeneffekt von code = 0b00001; in der while schleife war, dass mir dann immer ein Fragezeichen ausgegeben wurde. Deshalb wird der Befehl in der while-schleife nur ausgeführt wenn der code nicht gleich 0b00001 ist. So wurden tausende '?' erspart.

Jetz habe ich noch ein paar Falsch ausgaben zwischen drinn zu verzeichnen, was nach mehrmaligen drücken des Reset knopfes verschwindet.

Da würde es abhilfe schaffen am schluss (ebenfalls in der While-Schleife) alle Variablen etc auf 0 zu schalten.. Muss ich noch Testen.

Die übrigen Frage Zeichen die vom Code = 0b00001 in der whileschleife (höchst wahrscheinlich kommen) sind auch nicht grad supi.. Aber habe ich einfach unterdrückt durch die nicht Ausgabe von '?'

Nicht grad die feine Englische Art aber funktioniert.

was jetz noch fehlt ist die bereinigung des Codes der hier angesprochenen Fehler (variablen zurücksetzen) und ob vielleicht irgendwer noch grobe fehler entdeckt.

Hier nun mein Source Code smiley :

Code:
unsigned long time;
int sensor = A0,
    strich = 1,
    punkt = 0;
byte signal = 0,  // Signal ja/nein
     wert = 0,    // 0= Pause   1= Kurz   2= Lang   3= Zeilenwechsel
     code;

char ausgabe;

void setup()
{
  Serial.begin(9600);
  // time = millis();
  code = 0b00001;
}

void loop()
{
  if ( signal == 0 && analogRead(sensor) > 100)
  {
    signal = 1;
    time = millis();
    while ( analogRead(sensor) > 100)
    {}
    if ( millis() - time > 450 ) // Lang
    { code = code << 1 | strich;
      //Serial.println("Strich");
    }
    else // Kurz
    {code = code << 1 | punkt;
     //Serial.println("Punkt");
    }
     
     
  }
  if ( signal == 1 && analogRead(sensor)  <= 100)
  {
    signal = 0;
    time = millis();
    while ( analogRead(sensor) <= 100)
    {
      if (millis() - time >= 2000 && code != 0b00001){
       char ausgabe;
       ausgabe = moersetable(code);
       if (ausgabe != '?'){
        Serial.print(ausgabe);
       }
       code = 0b00001;
       Serial.println("");
      }
 
    }
    if ( millis() - time >= 2000 )  // Pause 2 sec -> Zeilenumbruch
    {} // Zeilenumbruch
    if ( millis() - time >= 380)
    {wert = 3;} // Pause zwischen Signalen || braucht man nicht!!
    if (millis() - time >= 790)
    {wert = 4;
     char ausgabe;
     ausgabe = moersetable(code);
     if (ausgabe != '?'){
      Serial.print(ausgabe);
     }
     code = 0b00001;} // Pause zwischen Buchstaben
  }
 
}

byte moersetable(byte code){
 
  const char b_array[] =  {'?', '?', 'e', 't', 'i', 'a', 'n', 'm', 's', 'u', 'r', 'w', 'd', 'k', 'g', 'o', 'h', 'v', 'f', '_', 'l', '?', 'p', 'j', 'b', 'x', 'c', 'y', 'z', 'q', '.', '-'};
  char result;
  result = b_array[code];
  return result;
 
 
}


Gruß Flo[/code]
4  International / Deutsch / Re: Kurze Frage zu LED Cubes on: January 27, 2013, 12:31:11 pm
Naja dann setz den Strom auf 60 mA drauf und schalte die LED's nicht in Reihe sondern Parallel.

Probiere es erstmal mit 20 mA.

Aber wenn du nur solche stränge mit "dunkleren" LED's hast sind dann ja auch wieder alle gleich hell smiley-grin

Gruß
Flo
5  International / Deutsch / Re: Kurze Frage zu LED Cubes on: January 27, 2013, 11:43:41 am
Willst du die Led's dimmen oder sollen die nur einmal alle gleich hell sein ?

Du könntest immer 3 LED's zusammen machen

Was dann 9 wiederstände wären. Zum Beispiel 3 pro ebene. Aber ich bin mir nicht sicher wie sich das auf die langlebigkeit deiner LED's auswirkt.

Der eine Wiederstand muss also 3 fach so stark sein wie ein Wiederstand für nur eine LED. Sprich bei standard LED's einen 3k Wiederstand.
Dann sollte alles Passen.

Gruß
Flo
6  International / Deutsch / Re: Array Problem - Allgemeines Problem mit if in Verbindung von einem A-Sensor on: January 27, 2013, 11:11:40 am
So um zum Array Problem zurück zu kommen: Hier bin ich nun  smiley-grin

Code:
byte array [26] [26] = {
    {0b00101, 0b11000, 0b11010, 0b01100, 0b00010, 0b10010, 0b01110, 0b10000, 0b00100, 0b10111, 0b01101, 0b10100,
    0b00111, 0b00110, 0b01111, 0b10110, 0b11101, 0b01010, 0b01000, 0b00011, 0b01001, 0b10001, 0b01011, 0b11001, 0b11011, 0b11100},
    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26}
  };
  const char b_array[26] =  {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};

Kommt ein Fehler, dass const char [] zu viele Enterys hat...
Muss ich jetz splitten ?? Sprich wenn ausgabe aus array über 4 ist gehe in e-f_array etc? Oder gibt es da eine sinnvollere Lösung?

Kann euch auch mal gerne mein bisheriges werk präsentieren ^^

Code:
unsigned long time;
int sensor = A0,
    ma_count = 0, // Array Position hochzählen / zuweisen
    strich = 1,
    punkt = 0;
byte signal = 0,  // Signal ja/nein
     wert = 0,    // 0= Pause   1= Kurz   2= Lang   3= Zeilenwechsel
     code;

char ausgabe;

byte array [26] [26] = {
    {0b00101, 0b11000, 0b11010, 0b01100, 0b00010, 0b10010, 0b01110, 0b10000, 0b00100, 0b10111, 0b01101, 0b10100,
    0b00111, 0b00110, 0b01111, 0b10110, 0b11101, 0b01010, 0b01000, 0b00011, 0b01001, 0b10001, 0b01011, 0b11001, 0b11011, 0b11100},
    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26}
  };
 const char b_array[26] =  {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};



void setup()
{
  Serial.begin(9600);
  // time = millis();
  code = 0b00001;
}

void loop()
{
  if ( signal == 0 && analogRead(sensor) > 100)
  {
    signal = 1;
    time = millis();
    while ( analogRead(sensor) > 100)
    {}
    if ( millis() - time >= 2000 )  // Pause 2 sec -> Zeilenumbruch
    { wert = 3; } // Zeilenumbruch
    else
    {char ausgabe;
    ausgabe = moersetable(code);
     Serial.print(ausgabe);
    }
     
     
  }
  if ( signal == 1 && analogRead(sensor)  <= 100)
  {
    signal = 0;
    time = millis();
    while ( analogRead(sensor) <= 100)
    {}
    if ( millis() - time > 450 ) // Lang
    { code = code << 1 | strich;}
    else // Kurz
    {code = code << 1 | punkt;}

  }
 
}

byte moersetable(byte code){
 
  // steht bereits im Head, aber kann hier vielleicht besser angebracht sein
 /* byte array [26] [26] = {
    {0b00101, 0b11000, 0b11010, 0b01100, 0b00010, 0b10010, 0b01110, 0b10000, 0b00100, 0b10111, 0b01101, 0b10100,
    0b00111, 0b00110, 0b01111, 0b10110, 0b11101, 0b01010, 0b01000, 0b00011, 0b01001, 0b10001, 0b01011, 0b11001, 0b11011, 0b11100},
    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26}
  };
  const char b_array[26] =  {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
  */
  byte pos;
  char result;
  pos = array[code];
  result = b_array[pos];
  return result;
 
 
}

Und den Fehler Code den ich dazu bekomme:

Code:
Morse_Entschl_ssler_2:16: error: too many initializers for 'const char [26]'
Morse_Entschl_ssler_2.cpp: In function 'byte moersetable(byte)':
Morse_Entschl_ssler_2:72: error: invalid conversion from 'byte*' to 'byte'

Ich weiß auch noch nicht genau wie ich aus meinem 2D Byte Array dann eine positions angabe im Alphabet array machen kann.. :/

Gruß Flo[/code]
7  International / Deutsch / Re: [Ethernet-Shield] Nach neustart des Arduino geht nichts mehr on: January 27, 2013, 09:18:01 am
Sicher, dass sich kein anderes Gerät mit der IP in deinen Rooter eingewählt hat?

So gibt es dann Überschneidungen.

Leicht lösbar ist das, wenn du allen Geräten eine feste IP zuweist bzw deinem Arduino eine sehr hohe wie 192.168.0.169 etc zuweist. So ist es ziemlich sicher, dass kein anderes Gerät zufällig diese IP haben kann. Dann musst du aber natürlich auch deine Weiterleitung im Rooter abändern smiley-wink

Ist dein Ethernet-Kabel in Ordnung bzw die Box am Arduino/Rooter oder so verschmutzt? Dass da schon Fehler auftreten, kann natürlich auch sein.

Gruß
Flo
8  International / Deutsch / Re: Array Problem - Allgemeines Problem mit if in Verbindung von einem A-Sensor on: January 27, 2013, 08:55:36 am
Das heißt ich habe jetzt das hier:

Code:
byte x = 0b00001;

Dann shifte ich die 1 um eins nach links und füge 0 bzw 1 hinzu was dann das hier ergeben sollte:

Code:
x = 0b00010;

Bei i gleich 2 oder höher würde dann die Umwandlung in einen Buchstaben statt finden oder zusätzlich weitere Aktionen, wie Zeilenumbruch etc


Dann exportiere ich meine Funktionen mal schön, damit das ganze etwas übersichtlicher wird und nehme die Variablen mit.

Der 2D Array müsste dann so passen nur fehlen jetz noch die ganzen 0 bei z.B. 0b10 ( = " . " ) ---> 0b00010

Dann sollte der Code auch funktionieren.


Habe meine Hardware nun auch um einen Button, 3 Status LED's in Grün, Gelb, Rot und einen Lautsprechererweitert. Mal schaun was sich aus meinem Kleinen Projekt noch so entwickelt smiley
9  International / Deutsch / Re: [Ethernet-Shield] Probleme beim Implementieren eines iFrames - Ideen? on: January 26, 2013, 07:03:59 pm
Puuh smiley-grin Ehm ich fang damit auch gerade erst an, aber mit html kenn ich mich schon etwas aus.

Du könntest einfach einen Button per <div> oder <form> im html einfügen und via $POST dann einen Wert übermitteln.

den Post Script kannst du dann in einer if-Schleife abfragen und dann den Content XY mit in die if-Schleife hängen.

Bzw dann eine Variable hochschalten die dann in einer weiteren if schleife deinen Content erst "freigibt"

das leichteste wäre jetzt im html wenn du jetzt unterschiedliche Seiten aufrufst.


Eine weitere Idee wäre es deinen gesamten jetzigen Client.print in eine if schleife zu setzen:

Code:
void setup(){
int i = 0;
}

void loop(){
if (i == 0){
  client.println("<body>");
  client.print(blabla); //deine "Hauptseite
  client.print(<form>); //der button mit Post Script

}
if ( i ==1){
  client.print("unterseite);

}
}

hier hab ich auch nen link dazu http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=button.

Gruß
Flo
10  International / Deutsch / Re: [Ethernet-Shield] Probleme beim Implementieren eines iFrames - Ideen? on: January 26, 2013, 06:42:12 pm
Was sein kann ist, dass du deinen RAM voll geschrieben hast (Der ist nämlich nur 2 KB groß bei deinem Arduino smiley-wink ). Der Arduino muss ja deine ganze html Seite auf einmal ausgeben. (Also nehme ich mal an)

Du könntest jetzt einmal versuchen deine eine HTML Seite in Unterseiten aufzusplitten und dann schauen was nun passiert smiley-wink

So wird dein Arduino etwas entlastet.

Ein weiterer Punkt wäre, deine Internetseite auf einer SD Karte zu sichern und dann von dort aus zu öffnen. In deinem Ethernet Shield ist ja auch ein SD Karten Slot mit eingebaut.

Der Arduino Selbst lädt ja nicht den code aus dem iFrame, oder? Das macht das Empfänger gerät dann vom zugehörigen Server.
Den Punkt würd ich aber eher ausschließen, da du ja sagst, dass es klappt wenn du andere Code Passagen auslässt.

Grüße
Flo
11  International / Deutsch / Re: [Ethernet-Shield] Probleme beim Implementieren eines iFrames - Ideen? on: January 26, 2013, 06:16:45 pm
Also W5100 ist der Chip auf den Wiznet Ethernet Shileds. Hast du denn so eins?

Wo befindet sich der auskommentierte Code denn genau? Vielleicht wird er schon initialisiert bevor dein Ethernet Port initialisiert wird und somit hängt er sich auf.

Was ich auch recht verwunderlich finde, ist dass die den iframe befehl Splittest und warum du Ihn nicht einfach komplett einfügst bis '>' kommt.


Sind rein hypothetische Vermutungen ^^Aber manchmal sind es die einfachsten dinge  smiley-confuse
12  International / Deutsch / Re: Array Problem - Allgemeines Problem mit if in Verbindung von einem A-Sensor on: January 26, 2013, 04:10:59 pm
So iPhone App läuft jetz stabil mit folgenden werten: ein Punkt 0.5, eine Pause (zwischen Zeichen) 0.5 , ein Strich 1,5 und zwischen Wörtern auch 1,5 Pause (alles in Sekunden Angabe)

Da mach ich am besten alles was über 450 ms usw ist, da ich wahrscheinlich nicht in die bedingung " == 500 " schreiben kann was den äußeren Umständen echt weng hoch angerechnet währe wenn der exakt 500 messen würde smiley-grin


Jedenfalls hab ich noch eine Idee zum speichern der Werte:

Wir haben ja schon Byte x = 0b10101 = .-.- = Buchstabe (das ist die Methode von Michael_x)

Könnte man es nicht einfach so machen, dass man byte x = 0b1 initialisiert und dann bei wert 1 eine 0 hinten dran hängt und bei wert 2 eben eine 1.

Sprich sowas

Code:
x = x "+ 1" bzw "+ 0";

Nur will ich nicht den wert um eines erhöhen sondern hinten dran hängen. Das wird mit einem normalen Plus auf diese Weise nicht funktionieren ^^


Hab mich mal zu 2D Arrays kurz schlau gemacht, aber noch ein bis 2 fragen:

Am anfang muss man einen Datatype angeben, jedoch wird in den Zwei Ebenen ja jeweils ein anderer datatype verwendet (int bzw byte und char (für die buchstaben) )

Wie muss ich den dann definieren? Und in die erste Ebene schreibe ich dann meine Byte stränge rein. Nur werden dann bei zum beispiel bei dem buchstaben "e" der Byte strang so aussehen :   x = 0b10 ;

Das kommt dann in meine morsetabelle und wird am besten gleich so ausgegeben (??):

Code:
byte x = 0b1;
if (wert == 1){     // steht für punkt aus spaceball's idee zu den millis()
   x = x "+ 0";      // hinten dran hängen
}
Serial.print(morsetable[x]);


So sollte das Prinzip ausschauen:

Bei kurzen pausen wird einfach hochgezählt und eventuell bei über 4 ein Fehler ausgegeben.
Bei dreifacher Pause (nächstes Wort) Wird ein Befehl gegeben den Byte strang auszuwerten und zu Printen.
und bei Fünffacherpause wird eine neue Zeile Begonnen bzw Die Übertragung beendet, falls es über 4 sec lang sein sollte

Bräuchte jetz erstmal nur die Sache mit den Bytes und wie ob das so mit dem 2D Array funktioniert wie ich es in meinem kleinen Sample versucht habe zu veranschaulichen. smiley

Gruß
Flo

EDIT:

mein 2D Array schaut nun so aus: bei DIM_0_SIZE und DIM_1_SIZE wird wahrscheinlich die länge des Alphabets rein gehören? (--> 26)

Code:
byte char array [DIM_0_SIZE] [DIM_1_SIZE] = {
   //as many vals as dim1
  {0b101, 0b11000, 0b11010, 0b1100, 0b10, 0b10010, 0b1110, 0b10000, 0b100, 0b10111, 0b1101, 0b10100,
0b111, 0b110, 0b1111, 0b10110, 0b11101, 0b1010, 0b1000, 0b11, 0b1001, 0b10001, 0b1011, 0b11001, 0b11011, 0b11100},
  {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z}//as many rows as dim0
};
13  International / Deutsch / Re: Array Problem - Allgemeines Problem mit if in Verbindung von einem A-Sensor on: January 26, 2013, 09:24:25 am
Jetz komm ich dahinter, danke euch zwein!

Ist viel produktiver, da ich nicht immer genau dort anfange zu morsen wenn ich nur alle 100ms den Wert abfrage. Da variiert der Punkt dann immer zwischen 1 und 3...

Werde das nun mal versuchen einzubauen.

Ich habe jetz noch 2 Probleme mit dem iPhone. Zum einen wird das erste Zeichen immer nur als minimalsten blitz ausgegeben (da die LED am iPhone auch erst warm werden / hochfahren etc muss ^^)

Daher würde ich vorschlagen, dass ein anfangs signal von so 1 sec als Start auch gehen würde. Damit wird dann die LED auf betriebstemperatur gebracht und der Arduino ist sich auch sicher, dass es jetz losgeht. Die jetzigen Methoden sind ja darauf aufgebaut, dass bei einem ersten Signal es dann auch schon losgeht, aber was macht der Aruino wenn jetz über 1 sec eingestrahlt wird und danach einfach nichts kommt? Gibt es für solche fälle dann Probleme oder gibt er einfach nur nichts aus?

Ich fände es so also praktisch wenn man am anfang und ende Start / End leuchten machen würde was so eine sec aufwärts sein könnte.

Das Zweite Problem ist, dass mein Programm von . auf - zicken macht und der Punkt dem Strich anscheinend etwas Zeit klaut und somit ein Punkt mit doppelter Pause und einem Punkt daraus entsteht. Wieso auch immer.. Das muss ich noch rausfinden. Denke es ist sinnvoller meine iPhone APP dementsprechend anzupassen als jetz den Arduino auf diesen Fehler anzupassen.


Mit "gespeicherter Zeichenfolge" meinst du dann meine Speichermethode mit dem Array und 4 Nullen??

Was meinst du mit "Das Array müsste Byte entsprechen" ??

Und die Morsetabelle sollte nichts verlangen, die sollte nur passiv aggieren und nicht aktiv oder hab ich da nen denk fehler?


Gruß
Flo

14  International / Deutsch / Re: Array Problem - Allgemeines Problem mit if in Verbindung von einem A-Sensor on: January 25, 2013, 12:37:50 pm
@michael_x:

Da geb ich dir Recht smiley-grin Wäre nur schön gewesen, da ich ein solches Zeichen in meinem Name trage und das dann noch ne Spur eindrucksvoller wirken würde smiley-razz (ist aber wie gesagt nur eine Spielerei smiley-wink )

Das Object kommt eben vom iPhone App programmieren. Aber mir ist auch gerade aufgefallen, dass ich gar nicht mit Objekten zu tun habe (sprich [blablalba] ).

Ich versteh nicht, was du auf dem Arduino speichern willst:
Nach der Zeichen-Pause kannst du ein Zeichen dekodieren und ausgeben.
Bei der Wort-Pause gibst du ein extra Leerzeichen aus.
Bei der Satz-Pause gibst du ein extra Newline  ( '\n' )
Nach 10 Pausen Ruhe ( oder eher deutlich später ) kommt "Übertragung beendet".
Arduino hat und braucht hierfür kaum Speicher.

Was ich Speicher will ist das was du auch vergessen hast oder ich den vielleicht selbstverständlichen Weg nicht weiß.

Um die Zeichenfolge " . . - " entschlüsseln zu können musst du die Zeichenfolge erst einmal Speichern bzw zusammen schieben.

Das stelle ich mir nun aber eher "einfach" vor. Man könnte einen Array mit 4 bzw 3 (wegen der 0 Speicherfläche ?? ) erzeugen und mit 0 o.ä. füllen. Wenn jetz ein Punkt kommt den Platz mit 1 vollschreiben und bei Strich eben mit 2. Um dann etwas zusammen geschobenes auszugeben lässt man die Nullen eben "fallen" und schreibt den Array dann wieder mit Nullen voll damit kein Fehler für die nächsten Zeichen übrig bleibt.



@spaceball:

Danke für deine Überlegungen! Die werde ich auch mal ausprobieren! smiley-wink
int sensorValue hast du anscheinend initialisiert aber nie gebraucht und kann deshalb weggelassen werden?

millis() - time verstehe ich auch nicht so ganz vom Prinzip her. Dachte time = millis() .

Das wäre ja dann das gleiche wie " x - x " und das ist immer null.

Von daher müsste man 2 unterschiedliche Zeiteinheiten parralel laufen lassen und deren Differenz würde dann dem hier entsprechen oder sehe ich das falsch?

Ich frage mich nur wann dann die andere Zeit einheit anfagen soll. Da man dann aufgrund der schon gelieferten Zeichensätze zusätzlich Zeit mit einberechnen müsste, welche ja variieren und daher meinen Ausgaben am Schluss noch ein verbrauch_time = XY machen müsste abhängig von den punkten und Strichen.


Danke auf jedenfall schon mal euch beiden für eure Super Unterstützung!!!! smiley smiley smiley


Gruß
Flo
15  International / Deutsch / Re: Array Problem - Allgemeines Problem mit if in Verbindung von einem A-Sensor on: January 24, 2013, 05:38:38 pm
Die Pause hat mich nun gereitzt  smiley-roll

Habe nun die drei Pausen Typen eingebaut und auch Erkennung wann das ganze anfängt und wieder aufhört.

Hab auch jeweils was in die Kommies zur Erklärung dazugeschrieben.

Code:
int count = 0;
int sensor = A0;
int i;
int c;
int pause;
int start_pause;
int count_p;

//int array[];

void setup(){          // initialisierung meiner int's
  Serial.begin(9600);
  i = 0;
  c = 0;
  pause = 0;
  start_pause = 0;
  count_p = 0;
}

void loop() {
 
  int sensorValue = analogRead(sensor); // Abfragen des Fototransistors
 
  if(sensorValue <= 100){               // Wenn kein Licht bzw Steulicht von Raum etc
    count = 0;
    if (start_pause == 1){              // Beginnt erst, wenn schon einmal Licht war
      if (pause == 0){                  // Wenn Pause zurückgesetz wurde, dann mitzählen
        count_p = 0;
      }
      pause = pause + 1;               
      count_p = count_p + 1;            // Kann das eventuell rausgelassen werden? nur für letzte funktion   
    }
   
  }
 
  if (sensorValue >= 100){
    i = i + 1;
    count = count + 1;
    start_pause = 1;
   
  }
  if (i > 3 && count == 0){
     // array[c] = "-";
     c = c + 1;
     i = 0;
     pause = 0;
     Serial.println ("Strich");
   }
   if (i == 3 && count == 0){
     // array[c] = ".";
     c = c + 1; 
     i = 0;
     pause = 0;
     Serial.println ("Punkt");
    }
   
   if (i == 1 && pause == 3 && start_pause == 1){
     pause = 0;
     Serial.println("Pause Buchstabe");            // Zwischen jedem Buchstaben ist eine Punkt länge Pause
   }
   if (i == 1 && pause == 6 && start_pause == 1){
     pause = 0;
     Serial.println("Pause Wort");                // Zwischen jedem Wort sind zwei Punkte bzw ein Strich Pause
   }
   if (i == 1 && pause == 9 && start_pause == 1){
     pause = 0;
     Serial.println("Pause Satz");                // Zwischen jedem Satz sind 3 Punkt-längen Pause
   }
 
   if (count_p >= 10){
     start_pause = 0;                          // Damit keine unnötigen Pausen gezählt werden
     count_p = 0;                              // Zurücksetzten
     
     Serial.println ("Übertragung Abgeschlossen"); // Könnte dem Array / Plotter sagen: jetz umwandeln
   }
 
  delay(100);                        // Fragt nur alle 100 ms den Wert am Sensor ab
 
}


Die jetzigen Serial.println sind nur zum Testen da, damit man sieht, dass was ankommt.


Ich find die Idee super! smiley smiley

Nach deinem Prinzip müsste dann das hier stimmen: (Zwecks Verständniss)

u = ..- = 0b01001
q = --.- = 0b11101

ß = ...--.. = 0b10001100 (Das würde jetz aber den Ramen von max 4 Zeichen sprengen, wegen Sonderzeichen)

Das ß könnte man aber auch erstmal auslassen ^^ Das sind Träumereien aber cool wäre es schon.

Habe übrigens 32.256 Bytes Platz, also könnte man sich da ruhig austoben smiley-wink

Das Problem ist dann aber immernoch die Speicherung?

Achsoooo... ich kann die Dann ja alle hintereinander in einer Line im Serial Port ausgeben lassen und dann bei neuer eingabe in die nächste Zeile springen. smiley Jetz kapiere ich auch deine aussagen vor dem Edit.


Wie erzeugt man bei Arduino Object C einen Pointer? Hab die bisher nur beim iPhone gemacht..

Momentan spielt sich bei mir alles im void loop() ab, dafür will ich ja aber eine weitere "Funktion" oder sehe ich das falsch?


Schon mal danke für den Super Tipp!! smiley smiley
Pages: [1] 2