Show Posts
Pages: 1 ... 77 78 [79] 80 81 ... 205
1171  International / Deutsch / Re: Rechtecksignal funktioniert nicht on: September 02, 2013, 11:04:50 am
Um ein Poti einzulesen, muss man nicht analogRead() schneller machen.

Was man machen könnte, wäre nicht auf ein Ergebnis warten...


Aber 20 µs sollte man besser mit Timern hinkriegen ( direkte Port-Manipulation wäre auch nicht verkehrt, stimmt ).
1172  International / Deutsch / Re: Programm bleibt unerwartet stehen (Stepper Betrieb) on: September 02, 2013, 10:46:15 am
@Serenifly: Dein letztes Beispiel ist evtl. eher verwirrend, denn es heisst dass während Messung läuft, ist Joystick() nicht in Funktion.
Und Startpunktanfahren() ist nach meinem Verständnis auch nicht in einem loop() Durchlauf fertig.
( und wo ist NotAus, das die ganze Diskussion erst losgetreten hat ?! )

"State Maschine" ist ein hochtrabendes Wort, aber klar muss sich eine Funktion wie Messung(), die millionenmal aufgerufen wird, merken was gerade Sache ist, bis sie wieder in einem Zustand ist, wo sie nur noch nach einem neuen Startbefehl fragt.

Evtl kann die oberste Ebene Zustandsführung in loop realisiert werden :
Code:
struct { ... } JoystickState;
enum { STATE_IDLE, STATE_START, STATE_MESSUNG } currentState;
void setup()
{
   currentstate = STATE_IDLE;
   Serial.begin(115200);
}

void loop()
{
   if (NotAusAbfrage() ) { NotAusFunktion(); return; }
   Joystick();  // Abfragen und Zustand global bereitstellen

   if(currentState == STATE_IDLE)
   {
        if ( Startbefehl() )
           currentState = STATE_START;
        else Ausgangsposition();
   }
   if (currentState == STATE_START)
   {
      if ( StartpunktAnfahren() )
        currentState = STATE_MESSUNG;
   }
   if (currentState == STATE_MESSUNG)
   {
      int result = Messung();
      switch (result)
      {
       case 0: break; // läuft noch
       case 1:
           Serial.println("Messung erfolgreich beendet");
           currentState == STATE_IDLE;
           break; 
   }
}


Messung hat genauso wie loop eine eigene Zustandsführung, die aber nach aussen uninteressant ist ( Mal angenommen ).
Kann auch in einer eigenen Datei realisiwert werden

Code:
int Messung()
{
     // liefert 0 solange aktiv, oder eine Ergebniskennung

     const unsigned long Minimalzeit = 3600000;  // frühestens nach 1 Stunde fertig

     static enum {M_SETUP, M_INIT, M_WAIT,M_PHASE1,M_PHASE2} state = M_SETUP;

     static unsigned long starttime;
     static boolean done;
 
     switch (state)
     { 
      case M_SETUP:
          starttime = millis();
          // more quick setup functions
          state = M_INIT;
          break;
       ...
     case M_PHASE2:
         if ( done && millis()-starttime > MinimalZeit)
         state = M_SETUP;    // für die nächste Messung vorbereiten
         return 1;                 // Messung fertig
     }
     return 0;
}
1173  International / Deutsch / Re: Brauche Hilfe bei Projekt mit serieller Datenübertragung! - Taschenrechner on: September 02, 2013, 09:49:43 am
Quote
EIA232/RS232-like interface, with the voltage level +4.2V used for logical 1, and 0V (GND) for logical 0"
- Baudrate 9600 bps
- keine "Parität"
- Byte-Größe: 8 Bits
- Stop-bits: FROM Casio: 2 bits TO Casio: 1 bit

Das war doch schon klar, passt doch so wie es ist, ( 4.2/5.0 = 1 / 0 = 0 ) ist auch was der Arduino unter Seriell versteht.

Dein link zeigt, in Casio Basic gibt es

Send(A) und
Receive(B)

und nach deinem letzten Post im Juni war doch alles klar, oder ?

Die drei Drähte GND, RX, TX kannst du direkt an den Arduino anschliessen. Wenn du dein Casio-Crossover-Kabel nicht zerschneiden willst, ein passender Stecker  ( 2.5mm Stereo ) mit den 3 Leitungen hängt an jedem Stero - Ohrstöpsel, oder du bersorgst dir eine passende Buchse.
Quote
Ist es vielleichteinfacher, wenn man den USB-Port als Schnittstelle zum Arduino benutzen würde?

? Versteh ich evtl. nicht ?
Sicher sollte Serial ( via USB ) zum PC als Test- und Debug-Schnittstelle verwendet werden, beim Uno nimmst du eben SoftSerial auf zwei anderen Pins dazu, um den Arduino mit deinem Casio zu verbinden.

1174  International / Deutsch / Re: Programm bleibt unerwartet stehen (Stepper Betrieb) on: September 02, 2013, 09:11:38 am
Quote
Messung() kann an sich mehrere Stunden dauern

Messung() muss natürlich spätestens nach einigen wenigen Millisekunden zurückkommen.
Normalerweise stellen solche Funktionen nur fest, dass noch nichts neues zu tun ist, und fertig.
Wenn doch, dauert das Einleiten des nächsten Schritts auch keine Zeit, und wieder fertig...

Ein "Programm" und einmal durch loop() hat nichts miteinander zu tun.

Timer sind natürlich auch schön, speziell wenn du keine Zeit hast, dass eine der Funktionen doch mal 1-5 ms dauert.
Alles was nicht ganz so zeitkritisch ist, geht auch in einer vernünftigen loop().
1175  International / Deutsch / Re: Rechtecksignal funktioniert nicht on: September 02, 2013, 08:59:13 am
Code:
   if (currentMicro=wait)

sollte wenn überhaupt, wohl was anderes sein.

Was du mit delay() bei 50 µs Zyklus-Zeiten machen willst, verstehe ich auch nicht.

50µs sind schon knapp für "normale Arduino" Programmierung, das ist eher was für Timer.
Zumal wenn du in loop ein analogRead hast, was allein ca. 100 µs braucht.
1176  Using Arduino / General Electronics / Re: Logic Level Converters. on: September 02, 2013, 02:49:14 am
A led and a resistor are 2ct each   =>   20ct for 5 signals, so rather comparable.

Thanks for clarifying, 1ChicagoDave.

Additionally:
Well, all datasheets always say
Quote
input voltage    min -0.5max Vcc + 0.5 V
Even the nxp sheet you linked, although mentioning at Features "Accepts input voltages in excess of the supply voltage"

We do not need 15V,  so any 4050 e.g. 74HC4050 with Vcc 2 .. 6 V should do as well, running it at Vcc = 3V with Vi signals in 0..5V ?

I'm not too familiar with electronics, but I can calculate resistor voltage dividers and leds, and I have a big bag of those smiley-wink
1177  International / Deutsch / Re: Problem mit Interrupt - Arduino hängt sich auf? on: September 02, 2013, 02:40:00 am
smiley-wink

Nachdem cocktail1 ausgeführt wurde, ist status_button1 immer noch HIGH und button_delay immer noch >= 4  
Bist du sicher dass du mit diesem Code aus der while Schleife rauskommst Nachtrag:, ohne 2 Cocktails hintereinander zu mixen ?
...( Evtl. hab ich noch was übersehen )

Das hat mit interrupts nichts zu tun.
Brauchst du überhaupt einen Durchflussmesser ?   Zeitmessung ist einfacher...
 
Edit: na gut , nach dem 2. cocktail ist wohl Schluss, wenn man den Knopf während der Herstellung des ersten endlich loslässt.
1178  International / Deutsch / Re: eMail mit Arduino senden on: September 02, 2013, 02:13:22 am
Die allermeisten mail server wollen nicht als Spam-Schleudern missbraucht werden, und versuchen daher, es sendenden Programmen etwas schwerer zu machen.

Abhilfe: ein eigener mail server. Evtl. ist der Hamster was für dich.
1179  International / Deutsch / Re: Verständnisfrage Kommunikation zwischen PC und Arduino on: September 02, 2013, 12:42:55 am
Schau dir mal Serial an

Die andere Seite ist nicht auf den Serial Monitor in der Arduino IDE beschränkt, das kann auch irgend ein anderes Programm sein.
Kann auch von dir (auch in Java) für den PC geschrieben sein.

Im Java Core ist javax.comm dafür vorgesehen, "alle Welt"  (auch der Serial Monitor der Arduino IDE) verwendet stattdessen aber
RXTX. Wenn du Arduino auf deinem PC installiert hast, ist dort schon RXTXComm.jar (und rxtxSerial.dll) zu finden, was du in deinen Java Programmen verwenden könntest.
Nachtrag: Verwende der Einfachheit halber ( wie Arduino ) eine 32 bit JVM.

Die PC-Seite ist bei weitem das Schwierigere an deiner Idee.
Ein Arduino, der Serial.read() aufruft und bei jedem 'R' die rote LED einschaltet, bei 'G' die grüne und bei '0' beide wieder ausmacht, und alles andere ignoriert, ist "trivial"

Edit: Sorry, die erforderliche native Code Komponente heisst rxtxSerial.dll
1180  International / Deutsch / Re: I2C RTC DS1307 verliert wieder die Zeit/Datum on: September 01, 2013, 05:38:58 am
Quote
Wer an diesen Modulen bei leerem Puffer-Akku das Modul nicht für einige Stunden an eine 5V-Stromversorgung hängt, um den Akku aufzuladen, sondern wer die vermeintliche Batterie (Akku LIR2032) in dem Fall durch eine tatsächliche Batterie (Batterie CR2032) ersetzt, der braucht sich über Fehlfunktionen nicht zu wundern.

Leider ist es andersrum: Ich habe eine CR2032 dazu geliefert bekommen, und alles geht wunderbar (selbst die Batterie ist bis jetzt nicht explodiert)
aber GoMega muss erst seine LIR2032 ein paar Minuten laden, bis die Vcc Spannung so hoch ist, dass die RTC losläuft ...

( das ist meine Interpretation der Geschichte )
1181  International / Deutsch / Re: 24V Sensor auswerten on: September 01, 2013, 05:33:44 am
Was heiss schon "kein Signal" ...

Ich interpretiere das so, dass höchstens 1µA rein ( wenn 5V anliegt ) oder raus ( wenn 0 V anliegt) fliesst.

Wie gunterb schon gesagt hat, rechne mit 5MOhm.

Oder mit unendlich, das dürfte keinen wesentilchen Unterschied machen, wenn du im erlaubten Bereich bleibst.
1182  International / Deutsch / Re: Arduino sendet und empfängt 12 bit / 16 bit werte on: September 01, 2013, 05:28:46 am
Ja, allerdings macht SPI eigentlich auch nur byte-Transfer.
1183  Using Arduino / General Electronics / Re: Logic Level Converters. on: September 01, 2013, 04:27:54 am
@1ChicagoDave: What's 'these' for you ?

For the 4 Nokia5110 Signals   I use 3 * resistor voltage dividers and 1 * led eating 2V, signaling data transfer for debugging reasons.
Quote
work great for that
1184  International / Deutsch / Re: I2C RTC DS1307 verliert wieder die Zeit/Datum on: August 31, 2013, 04:57:05 pm
Danke, bisher ging alles gut.
1185  Using Arduino / Programming Questions / Re: error message on: August 31, 2013, 04:54:36 pm
Adding semicolons sometimes does not hurt, but sometimes it does.

Additionally:
Code:
   if (ch == '#')
  }
does not make sense, neither.

You could add a semicolon here, but I'm not sure this will behave according to your intention

Next time: code tags, indentation, and a closer look by yourself smiley-wink
Pages: 1 ... 77 78 [79] 80 81 ... 205