Show Posts
Pages: [1] 2 3 ... 35
1  International / Deutsch / SOLVED: Servo geht nicht in switch - case Anweisung on: September 14, 2014, 06:00:13 am
Oh Mann Uwe, du bist der Held !

ich hatte vermutet, dass es ein "doofer Fehler" ist, habe aber habe den Wald vor lauter ... du weißt schon.
Index vergrößert und alles funktioniert.
Quote
Auch verstehe ich nicht wieso Du bei Index 1 startest:
Der erste Wert mit Index 0 wird gespeichert, wurde anfangs mal ausgegeben, aber nun nicht weiter verwendet. Das kommt davon, wenn man bei der Entwicklung des Programms "toten Code" stehen lässt und nicht optimiert. Aber danke für den Tip.
Code:
ein unsigned int duration[6]; Array geht von duration[0] bis duration[5].
Wahrscheinlich hab' ich Depp gedacht "geht von 1 bis 6 plus 0 sind 7 Elemente" .

Vielen Dank, der Tag ist gerettet
Reinhard
2  International / Deutsch / Re: Servo geht nicht in switch - case Anweisung on: September 14, 2014, 03:47:59 am
Hallo,

habe neue Erkenntnisse, die mich aber eher verwirren, als weiterbringen.
Um zu prüfen, ob der Servo "attached" ist habe ich an verschiedenen Stellen des Programms den Befehl
Code:
Serial.println(myservo.attached());
ausgeben lassen.
Solange das Programm in der "case 0" Schleife ist, ist der Servo "attached". Wenn das Programm 7 Klopfer erkannt hat und in die case 1 Schleife gewechselt wird ist der Servo "not attached".
Code:
      if (knocks>=7) {
        state=1;   // Auswertung
        knocks=0;
      }
    }
    Serial.print("case 0 "); 
    Serial.println(myservo.attached()); 
    break;
Vor dem Übergang wechselt der Zustand myservo.attached().
Code:
case 0 1
case 0 0
0
553 536 283 282 42 232
42 553
52 415
i1o
110000

0
Safe open

Ich versteh das nicht - Ihr ?

Gruß
Reinhard
3  International / Deutsch / Re: www.Arduino.de ?? on: September 10, 2014, 03:54:48 pm
Hallo Mücke,

du meinst vermutlich
http://arduino.de/

Gruß
Reinhard
4  International / Deutsch / SOLVED: Servo geht nicht in switch - case Anweisung on: September 10, 2014, 03:51:45 pm
Hallo,
ich versuche seit Stunden den Fehler zu finden ....
Ich arbeite an einem Programm für einen Piezo Klopf Sensor. Wenn der richtige Code geklopft wird, soll ein Servo ein Schloss freigeben. Der Servo funktioniert und wird im setup einmal hin- und her gefahren. Wenn der richtige Code erkannt wird, bewegt sich der Servo allerdings nicht. Dass Programm durchläuft den Programmteil, das sehe ich an der seriellen Ausgabe.

Hier das komplette Programm
Code:
#include <Servo.h>

/* Piezo Klopf Sensor - Piezo mit R=10k und C=10n parallel an A0 *
 Empfindlichkeit mir AnalogReadSerial ausprobieren */

Servo myservo;  

int state=0;
int knocks;
byte code=0b110000;
byte testcode;
unsigned long startm, startl;
unsigned long dauer;
unsigned int duration[6];

void setup() {
  Serial.begin(115200);
  Serial.println("Knock Sensor detect");
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  myservo.write(0);          // test servo  
  delay(800);  
  myservo.write(180);   // Ausgangsposition
}

void loop() {
  switch (state) {
  case 0:    // initial loop for first detection
    if ((millis()-startm)>2000){
      knocks=0;
    }
    if (analogRead(A0)>50) {
      while (analogRead(A0)>10) {
      }
      startl=startm;
      startm=millis();
      /*      Serial.print("Knock ");
       Serial.print(knocks);
       Serial.print(" erkannt - ");
       Serial.print(startm-startl);
       Serial.println(" Pause");*/
      duration[knocks]=startm-startl;
      knocks++;
      if (knocks>=7) {
        state=1;
        knocks=0;
      }
    }
    break;

  case 1:    // detect knocks and check if valid
    int groesster = 0;
    int kleinster = 1023;
    for (int i=1;i<=6;i++) {
      if (duration[i]>groesster) groesster=duration[i];
      if (duration[i]<kleinster) kleinster=duration[i];
      Serial.print(duration[i]);
      Serial.print("\t");
    }
    Serial.println();
    Serial.print(kleinster);
    Serial.print("\t");
    Serial.println(groesster);
    int kleinster_plus=kleinster+(kleinster>>2);
    int groesster_minus=groesster-(groesster>>2);
    Serial.print(kleinster_plus);
    Serial.print("\t");
    Serial.println(groesster_minus);
    for (int i=1;i<=6;i++) {   // 1=lang, 0=kurz
      if (duration[i]==groesster) Serial.print("i");
      else if (duration[i]==kleinster) Serial.print("o");
      else if (duration[i]>=groesster_minus) Serial.print("1");
      else if (duration[i]<=kleinster_plus) Serial.print("0");
    }
    Serial.println();
    for (int i=1;i<=6;i++) {   // 1=lang, 0=kurz
      testcode <<= 1;
      if (duration[i]==groesster) testcode |= 0b00000001;
      else if (duration[i]==kleinster) testcode &= 0b1111110;
      else if (duration[i]>=groesster_minus) testcode |= 0b00000001;
      else if (duration[i]<=kleinster_plus) testcode &= 0b1111110;
    }
    Serial.println(testcode,BIN);
    Serial.println();
    if (testcode==code) {
      myservo.write(0);          // open
      Serial.println("Safe open");
      delay(800);  
      myservo.write(180);   // close
      delay(1000);
    }
    state=0;
    break;
  }
}

Die Stelle, wo der Servo sich nicht bewegt ist
Code:
   if (testcode==code) {
      myservo.write(0);          // open
      Serial.println("Safe open");
      delay(800);  
      myservo.write(180);   // close
      delay(1000);
    }
Wie gesagt: die Ausgabe "Safe open" wird seriell ausgegeben

Wer weiß Rat ?

Gruß
Reinhard
5  International / Deutsch / Kubuntu 14.04 - IDE Datei -> Öffnen - Fenster im Hintergrund on: September 09, 2014, 10:10:48 am
Hallo,
nachdem ich kürzlich meinen Rechner von Kubuntu 12.04 auf 14.04. umgestellt habe, öffnet sich das Fenster mit der Verzeichnisansicht nach IDE Menüaufruf Datei->Öffnen immer im Hintergrund.
Das ist bei 2 Rechnern so.
Ist ziemlich nervend, wenn man dann immer nochmal ein Fenster wechseln muss.
Hat jemand ähnliche Erfahrungen und weiß wie man das umstellen kann?

Gruß
Reinhard
6  International / Deutsch / Re: Ubuntu-Experten hier? on: August 31, 2014, 03:23:22 pm
Bei mir liegt der Ordner "sketchbook" auf Dropbox. Darauf habe ich von allen Rechnern und Betriebssystemen Zugriff, zur Not sogar von fremden Rechner. Und alles ist immer synchron.
7  International / Deutsch / Re: 433mhz Funksteckdosen, Problem schon beim auslesen. on: August 21, 2014, 12:50:28 pm
Hast du an Sender und Empfänger eine Antenne von ca. 17cm angeschlossen?
Diese Module von eBay sind manchmal extrem unempfindlich und brauchen eine Antenne.

Gruß
Reinhard
8  International / Deutsch / Re: Intertechno Funksteckdosen mit Arduino ansteuern on: August 17, 2014, 01:36:57 pm
Hallo,
schau dir mal diese Projekt an, das sollte dir weiterhelfen.
https://code.google.com/p/rc-switch/wiki/HowTo_Send?tm=6
Gruß
Reinhard
9  International / Deutsch / Re: Serielle Kommunikation zwischen php und Arduino on: August 12, 2014, 11:22:59 am
Quote
Was scheint darin zu stecken
Na, das, was meine Frage war.
Quote
Jetzt möchte ich den Fehler abfangen, wenn der Arduino nicht angeschlossen ist, also die Schnittstelle /dev/ttyACM0 nicht existiert.
Nach dem Öffnen der Schnittstelle wird ein Fehlercode abgefragt
Code:
catch (phpSerialException $e) {
$this->_jsonError($e->getMessage());
die();
} catch (Exception $e) {
$this->_jsonError($e->getMessage());
die();
}

Quote
und was genau verstehst du am Code nicht ?

wie ich die Abfrage in meinen Code integrieren kann. Wär super, wenn du weiterhelfen kannst.
10  International / Deutsch / Re: Serielle Kommunikation zwischen php und Arduino on: August 11, 2014, 03:19:19 pm
mmh ...
irgendwie scheint das hier drin zu stecken, aber ich verstehe die Programmierung nicht. (https://github.com/JanStevens/ArduinoPi-Controller/blob/master/api/arduino_pi.class.php)
Code:
public function __construct($device)
{
// Setup the serial connection, call the parent constructor
try {
parent::__construct();
$this->deviceSet("/dev/rfcomm0");
$this->confBaudRate(115200);
$this->confParity("none");
$this->confCharacterLength(8);
$this->confStopBits(1);
$this->_setDevice($device);
} catch (phpSerialException $e) {
$this->_jsonError($e->getMessage());
die();
} catch (Exception $e) {
$this->_jsonError($e->getMessage());
die();
}
}


In Bezug auf das andere Beispiel: leider habe ich keine Ahnung von json
11  International / Deutsch / Re: Serielle Kommunikation zwischen php und Arduino on: August 10, 2014, 04:17:57 pm
Super, hört sich gut an.
Zusatz noch: das Ganze funktioniert nur wenn vorher die Arduino IDE die stty Einstellungen verändert hat. -ixon, -icanon und -echo scheinen die entscheidenden Einstellungen zu sein.
Muss mal sehen, ob ich das mit der Klasse setzen kann.
12  Topics / Science and Measurement / Re: Need help: SerialPort and PHP under Linux on: August 10, 2014, 03:33:03 pm
Hi,
are you sure that php (apache) is permitted to read the seriell interface ?
In Linux the user and group for apache ist www-data. You have to add this user to the group dialout.

13  International / Deutsch / Serielle Kommunikation zwischen php und Arduino on: August 10, 2014, 03:26:40 pm
Hallo,

ich habe einen Arduino über seriell mit meinem Linux Webserver verbunden. Die Kommunikation zwischen php und seriell funktioniert mit folgendem Beispielprogramm. Die Datei php_serial.class.php kommt von hier http://www.phpclasses.org/browse/file/17926.html
Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors''1');
include 
"php_serial.class.php";

$serial = new phpSerial;
$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->deviceOpen();
$serial->sendMessage("Hello!");
// usleep(50);
$read $serial->readPort();
echo 
"read_data ##- ".$read." -##</br>";

$serial->deviceClose();

echo 
"Message gesendet! \n\r";
?>


Momentan echo'ed der Arduino jedes Zeichen. Das funktioniert und die Antwort wird korrekt auf der Webseite dargestellt.

Jetzt möchte ich den Fehler abfangen, wenn der Arduino nicht angeschlossen ist, also die Schnittstelle /dev/ttyACM0 nicht existiert. Dazu finde ich keine Beispiele mit der php_serial.class.php. (über fopen bekomme ich das hin, aber das ist nicht das Ziel)
Wer kann helfen?

Gruß
Reinhard
14  International / Deutsch / Re: Atmega328 Power / Sleep mode on: August 04, 2014, 04:03:11 pm
Schau dir mal dieses Projekt an https://github.com/nathanchantrell/TinyTX/blob/master/TinyTX_DHT22/TinyTX_DHT22.ino
Hier wird die Sleep Funktion aus der JeeLib benutzt. Ich betreibe damit mehrere Funksensoren, funktioniert zuverlässig.
15  International / Deutsch / Re: Wetterstation mit Yahoo Wetterdaten baut keine Verbindung auf on: August 02, 2014, 12:58:29 pm
Hallo,

die eingetragene IP
Code:
IPAddress server(87,248,122,181);
lässt sich nicht pingen.
Ein wget unter der Adresse liefert
Code:
$ wget http://weather.yahooapis.com/forecastrss?w=12893459&u=c
[1] 4142
$ --2014-08-02 19:54:44--  http://weather.yahooapis.com/forecastrss?w=12893459
Auflösen des Hostnamen »weather.yahooapis.com (weather.yahooapis.com)«... 66.196.66.157, 66.196.66.212, 66.196.66.213, ...
Verbindungsaufbau zu weather.yahooapis.com (weather.yahooapis.com)|66.196.66.157|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK

Besser wäre es den Hostnamen einzutragen und nicht die IP.

Gruß
Reinhard
Pages: [1] 2 3 ... 35