Show Posts
Pages: 1 [2] 3 4 ... 191
16  International / Deutsch / Re: Brauche Hilfe bei einer Stoppuhr on: July 17, 2014, 02:14:45 pm
Hallo nochmals, hat von euch noch einer eine Idee, wie ich die 2 Zeiten nun im Wechsel, auf einer Zeile anzeigen kann.

Also nur die Endzeiten.

Wieso "nur die Endzeiten"?

Wenn Du nicht den vollen Bereich bis 100 Stunden benötigst, sondern z,B. auch Zeiten bis 100 Minuten zur Darstellung reichen und Du auf die hundertstel Sekunden verzichtest, dann kannst Du mit einer Formatierung nach dem Schema "99:99,1" (7 Zeichen) eine Zeit bis 100 Minuten auf Zehntelsekunden genau ausgeben (oder eine Zeit bis 10 Minuten auf Hundertstel), also passen gegebenenfalls locker 2 Zeiten in eine einzige Zeile von 16 Zeichen Breite.

Das würde dann locker ausreichen, um z.B. die aktuell laufenden Zeiten in der ersten Zeile darzustellen und die zuletzt gestoppten Zeiten in Zeile 2.

Ansonsten, wenn Du den vollen Bereich bis 100 Stunden mit einer Auflösung von Hundertstel benötigst, kann man eine Wechselanzeige machen und z.B. immer zwei Sekunden lang die Zeit von Kart-1 und dann zwei Sekunden lang die Zeit von Kart-2 ständig im Wechsel anzeigen lassen.
17  International / Deutsch / Re: Mit Arduino Playstation steuern on: July 17, 2014, 01:52:24 pm
Der Muenzepruefer ist ein einfacher Schalter. Wenn eine Münze einwirft dann der Schalter schaltet einfach ein und wieder aus. Ich habe kein Münzzähler dass soll das Programm machen.
Einfacher
Ich habe ein Led(Playstation)  und ein Schalter(Muenzpruefer)
druck man Schalter Led leuchtet für 1 Minute
nach halbe Minute (währen Led leuchtet)  druck man wieder Schalter dann led leuchtet für noch 1 Minute. Insgesamt 2 Minute

Grober Entwurf ungefähr so:
Code:
#define COINTESTER  2   // Pin für Münzzähler
#define PLAYSTATION 13  // Playstation Pin zum Schalten eines Relais
#define GAMETIME   600  // Spielzeit pro Münze in Sekunden
 
void setup()
{
  Serial.begin (9600);
  pinMode(COINTESTER, INPUT_PULLUP);
  pinMode(PLAYSTATION, OUTPUT);
  Serial.println();
  Serial.println("Insert coin to start a new game!");
  coinInput(); // Münzzählung initialisieren
 }


boolean coinInput()
{
  static byte lastState;
  byte result=false;
  byte state=digitalRead(COINTESTER);
  if (state==LOW && lastState==HIGH) result=true;
  lastState=state;
  delay(5); // Entprellen mechanischer Schaltkontakte
  return result;
}


boolean oneSecond(){
  // Sekundenzähler testet, ob eine Sekunde vergangen ist
  static unsigned long prevMillis;
  boolean result=false;
  if ( millis() - prevMillis >= 1000)
  {     
    result=true;
    prevMillis += 1000;
  }
  return result;
}


unsigned long secondsToGo=0;

void loop()
{
  if (coinInput()) secondsToGo+=GAMETIME;
  if (oneSecond() && secondsToGo>0)
  {
    secondsToGo--;
    Serial.print(secondsToGo);
    Serial.println(" seconds");
    if (secondsToGo==0) Serial.println("Game Over - Insert Coin!");
  }
  //  Relais entsprechend der Restzeit ein- oder ausschalten
  if (secondsToGo==0)
    digitalWrite(PLAYSTATION,LOW);
  else 
    digitalWrite(PLAYSTATION,HIGH);
}

Allerdings ist es nicht besonders schonend für ein Fernsehgerät, dieses per Relais hart ein und aus zu schalten. Viele Geräte dürften sich nach einem Stromausfall auch gar nicht wieder einschalten, wenn der Strom wiederkommt. Aber wenn Du einen Arduino hast, kannst Du ja vielleicht auch eine IR Infrarot-LED ansteuern und dem Monitor Steuerbefehle zum ein- und ausschalten senden.
18  International / Deutsch / Re: Frage zur Taktgenerierung per Arduino on: July 17, 2014, 12:52:40 pm
Ich benötige für eine Astrokameranachführung per Getriebe, Untersetzung und Steppermotor einen
Taktgenerator welcher einen Takt bis auf 3 Nachkommastellen erzeugt.

Drei Nachkommastellen bei was? Jahre? Monate? Tage? Stunden? Minuten? Sekunden?

Der Arduino hat zwei Funktionen millis() und micros() mit denen er Dir einen Milli- und Mikrosekundentakt frei Entwicklungsumgebung liefert.

Allerdings ist der Takt vom 16 MHz Systemtakt abgeleitet und daher absolut gesehen nicht besonders genau.

Kannst Du es etwas detaillierter beschreiben, was Du genau brauchst?
19  International / Deutsch / Re: Mit Arduino Playstation steuern on: July 17, 2014, 12:47:51 pm
Bitte können Sie mir helfen, wie kann ich der Code schreiben.

Welche Hardware verwendest Du als Münzprüfer? Datenblatt?
Which type of hardware do you use as a coin counter? Datasheet?
20  International / Deutsch / Re: Livedaten von MEGA2560 vor Reset auf EEprom sichern? on: July 17, 2014, 11:56:16 am
Ich will nicht ständig auf das EEPROM schreiben weil das 5760 Schreibvorgänge/Tag bedeutet und in einem halben sind dann die EEPROM-Speicherzellen "durchgebrannt".

Falls Dir 56 Bytes zum Speichern der Daten reichen: Ein DS1307 RTC-Uhrenmodul hat 56 Bytes beliebig oft beschreibbaren RAM-Speicher drauf, der von der Stützbatterie ebenso gepuffert wird wie die Uhrzeit.

Du könntest also per I2C beliebig oft bis zu 56 Bytes in eine DS1307 speichern und die Daten würden Dir nach dem Reset wegen der Batteriepufferung sofort wieder zur Verfügung stehen.
21  International / Deutsch / Re: Serial.read geht nicht on: July 17, 2014, 09:47:14 am
Code:
if (Serial.available() > 0);
{
state1 = Serial.read();

}
if (state1 == '6')
{
digitalWrite(LED, HIGH);
}
if (state1 == '7')
{
digitalWrite(LED, LOW);
}

MfG  Marco

PS: Sorry ich hatte einen kleinen Tipfehler!  also 6 enter-> LED an, 7->aus
 wie bekomme ich nun hin OHNE Enter drücken?

Ohne Enter zu drücken bekommst Du das mit einem "Terminalprogramm" hin statt mit dem "Seriellen Terminal" von Arduino.

Und mit Enter bekommst Du das mit dem Seriellen Terminal von Arduino hin, wenn Du es vernünftig programmierst. Das hier ist völliger Unsinn:
Code:
if (Serial.available() > 0);

Das Semikolon am Ende bedeutet nämlich: Wenn diese Bedingung erfüllt ist, mache gar nichts.

Danach folgt in jedem Fall das Serial.read():
Code:
{
state1 = Serial.read();

}
Und dieses liefert immer -1, wenn KEIN Zeichen im seriellen Eingangspuffer bereitsteht.

Versuche mal das:
Code:
if (Serial.available() > 0)
{
  state1 = Serial.read();
  if (state1 == '6')  digitalWrite(LED, HIGH);
  else if (state1 == '7') digitalWrite(LED, LOW);
}

Und schaue Dir mal in Sachen C++ Syntax an, was eine Anweisung ist, was ein Codeblock und wie eine if-Anweisung aussehen kann!
22  International / Deutsch / Re: Entfernung auslesen inkl. Ampel (fade) on: July 17, 2014, 07:21:12 am
und die zahlen.. reichen eig auch.. es soll kein großer unterschied sein zwischen dunkel und hell...
das hab ich schon getestet das reicht mir so...

Wenn Dir das reicht, dann mache es doch so!

Beispielcode (ungetestet):
Code:
int trigger=7;
int echo=6;
int rLedPin = 9;
int yLedPin = 10;
int gLedPin = 11;
long dauer=0;
long entfernung=0;
 
 
void setup()
{
  Serial.begin (9600);
  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);
}


void eingabe()
{
  digitalWrite(trigger, LOW);
  delay(5);
  digitalWrite(trigger, HIGH);
  delay(10);
  digitalWrite(trigger, LOW);
  dauer = pulseIn(echo, HIGH);
  entfernung = (dauer/2) / 29.1;
}

void ausgabe()
{
  byte green=0, yellow=0, red=0;
  if (entfernung<=20)
  {
    green=255;
    yellow=255;
    red=(20.0-entfernung)/20*255;
  } 
  else if (entfernung<=40)
  {
    green=255;
    yellow=(40.0-entfernung)/20*255;
  }
  else if (entfernung<=60)
  {
    green = (60.0-entfernung)/20*255;
  }
  analogWrite(gLedPin, green);
  analogWrite(yLedPin, yellow);
  analogWrite(rLedPin, red);
  Serial.print(entfernung);
  Serial.print('\t');
  Serial.print(green);
  Serial.print('\t');
  Serial.print(yellow);
  Serial.print('\t');
  Serial.print(red);
  Serial.println();
}


void loop()
{
  eingabe(); 
  ausgabe();
  delay(200);
}
23  International / Deutsch / Re: Entfernung auslesen inkl. Ampel (fade) on: July 17, 2014, 02:53:04 am
Dein fade Algorithumus
    int fadeValue = 12 * (entfernung - 40) +15;
sieht doch nicht verkehrt aus

Der Fade-Algorithmus sieht für mich leider komplett falsch aus, wenn er den fadeValue als PWM-Wert nehmen möchte.

Der Grund liegt darin, dass das Auge Helligkeiten eher lorarithmisch als linear warnimmt.

D.h. die PWM-Werte 0, 1, 2, 4, 8 lassen sich von der Helligkeit her sehr gut als dunkel und vier verschiedene Helligkeiten wahrnehmen. Aber PWM-Werte von 245 bis 255 führen allesamt zu einer Helligkeit, die sich per Augenschein überhaupt nicht auseinander halten läßt.

Was er als Algorithmus braucht, ist eine Linearisierung in verschiedene Helligkeitsstufen. Zum Beispiel kann er einen von-bis Bereich in 10 verschiedene Helligkeitsstufen unterteilen:
0 - 1 - 2 - 4 -8 - 16 - 32 - 64 -128 -255

Und dann muß er nicht alle 2 cm den PWM-Wert um einen gleichen Betrag erhöhen, sondern er muss alle 2cm den PWM-Wert um eine Helligkeitsstufe erhöhen.

Der Ansatz, lineare Entfernungsänderungen in lineare PWM-Wertänderungen umzusetzen, funktioniert so nicht, weil das Auge Helligkeitsänderungen nicht so wahrnimmt.


24  International / Deutsch / Re: Array-Dimension zur Laufzeit festlegen on: July 17, 2014, 02:09:01 am
ich möchte Sensor IDs vom One-Wire-Bus in ein Array einlesen. Nach meiner bisherigen Kenntnis muss die Dimension des Arrays vorher definiert werden. Wenn aber die Dimension, d.h. die Anzahl der Sensoren vorher nicht bekannt ist, was mache ich denn dann? geht das überhaupt?

Dann kannst eine maximale Anzahl unterstützter Sensoren definieren, das Array für diese Maximalanzahl definieren und Dir beim Einlesen in einer Zählvariablen merken, wie viele Sensoren tatsächlich in das Array eingelesen werden.
25  International / Deutsch / Re: Sourcefrage -> lädt so nicht aufs Board on: July 16, 2014, 10:51:10 am
ich bekomme über die Console übrigens folgende Ausgabe:

Wenn Du mit Deinem grandiosen Kurzschluss-Sketch einen fetten Kurzschluss am USB-Seriell-Konverterchip verursachst, während Dein Sketch läuft, dürfte ebendieser USB-Seriell-Konverterchip auf Deinem UNO-Board wohl keinen automatischen Reset mehr durchführen können, wie er vor dem Upload eines neuen Sketches notwendig ist.

Da kommt wohl nur noch ein manueller Reset beim Upload in Frage:
- Reset-Knopf auf dem UNO Board drücken und gedrückt lassen
- Upload in der Arduino-Software starten
- Sobald in der Arduino-Software "Uploaden.." in der Statuszeile erscheint, den Reset-Knopf blitzartig loslassen

Wenn Du in Deiner alternativen Software das richtige Timing beim manuellen Reset mit Upload nicht hinbekommst, lade Dir mit der Arduino-Software und manuellem Reset einfach erstmal den Blink-Sketch wieder auf das Board, bevor Du dann wieder zu Deiner alternativen Software zurückwechselst und dann (hoffentlich) den Status der RX und TX Pins so läßt wie er ist, ohne einen Kurzschluss in Deinem Sketch zu bauen.

Falls Du es von der PC-Programmierung gewohnt bist, dass ein noch so idiotisch programmiertes Programm keine Hardwareschäden verursachen kann: Das gilt beim physical Computing mit Mikrocontrollern nicht! Sobald etwas am Mikrocontroller angeschlossen ist, und sei es nur dieser USB-Seriell-Konverterchip auf dem Board, kannst Du mit wenig Programmieraufwand bereits Überlastungen und Kurzschlüsse programmieren.
26  International / Deutsch / Re: Sourcefrage -> lädt so nicht aufs Board on: July 16, 2014, 10:32:14 am
DDRD = 0xFF;   // Alle Bits von Port D auf schreiben

PD0 und PD1 im PORTD/PIND sind auf einem UNO-Board die RX und TX Pins der seriellen Schnittstelle. Diese Pins sind mit dem USB-Seriell-Konverterchip auf dem Board und damit der USB-Schnittstelle verbunden.

Solange Du keine Ahnung hast, fasst Du die beiden Pins PD0 und PD1 auf Deinem Board besser für keinen anderen Zweck an, als darüber serielle Zeichen zwischen Board und PC auszutauschen.

Fuhrwerke lieber erstmal nur mit PD2 bis PD7 herum und lasse Bit-0 und Bit-1 im DDRD Register immer so stehen wie es steht! Und versuche nicht an diesen beiden Pins etwas lauflichtern zu lassen!
27  International / Deutsch / Re: Daten vom Arduino an Excel senden on: July 16, 2014, 06:45:30 am
Ich hab leider nur den Arduino UNO. Es muss auch nicht an Excel unbedingt sein! Ich hab etwas gelesen, dass man solch eine Kommunikation per LogView hinbekommen würde.

Ist das richtig???

Vielleicht beschreibst Du erstmal, was Du machen möchtest: Realtime- oder Offline-Darstellung der Daten.

Also Realtime:
- Ein Messwert trudelt ein
- Ein Messwert wird dargestellt
und das immer reihum
Dazu siehe beispielsweise ==> http://forum.arduino.cc/index.php?topic=252642.0
Hier werden die Daten seriell an das darstellende Programm gesendet und ein neuer Wert wird immer dann dargestellt, wenn ein neuer Wert eintrifft.

Oder Offline:
- Alle Messwerte werden erstmal insgesamt gespeichert
- Anschließend werden alle Messwerte dargestellt
Dazu kannst Du die Daten entweder erstmal an den seriellen Monitor senden und von dort in die Zwischenablage kopieren und danach in einem anderen Programm einfügen, z.B. in Excel. Oder Du kannst die Daten in einem Terminalprogramm über die serielle Schnittstelle mit einer Funktion "Log to file" in einer CSV-Datei mitschneiden, die Du hinterher mit einer anderen Software (z.B. Excel) weiter vearbeitest. Hierbei können die Daten erst dann dargestellt werden, nachdem der letzte Messwert erfasst und in die Datei geschrieben wurde.
28  International / Deutsch / Re: Daten vom Arduino an Excel senden on: July 16, 2014, 05:59:03 am
Ist das mit dem Arduino UNO möglich?

Mit dem UNO so direkt nicht, aber mit einem "Leonardo" oder "Micro".
Diese Boards kannst Du als HID-Device programmieren, so dass sie sich angeschlossen am PC wie eine Tastatur oder eine Maus verhalten. Du kannst an den PC dann Tastaturcodes senden, die dann in einem Programm genau so verarbeitet werden, als hättest Du sie tatsächlich über eine Tastatur eingegeben.

Du solltest das Verhalten aber mit einem Kippschalter oder so abschaltbar machen, so dass Du das Verhalten ein- und ausschaltbar machen kannst. Wenn Du das nicht machst, sendet Dir das Board sonst Deine für Excel vorgesehenen Messwerte auch gnadenlos in den Arduino-Editor und das wäre dann ungünstig, wenn Du danach ein neues oder geändertes Programm auf das Board laden möchtest.

Alternative für UNO-Boards: Du könntest Daten über ein Terminalprogramm in eine CSV-Logdatei mitschneiden und speichern und die CSV-Datei hinterher mit Excel öffnen.
29  International / Deutsch / Re: Reifendrucksensoren Auslesen on: July 16, 2014, 05:18:49 am
Das Fahrzeug ist ein US Modell und Funkt auf 315 Mhz.

Das ist in ganz Europa eine illegale Funkfrequenz.
In Europa ist stattdessen 433 MHz für Short-Range Anwendungen vorgesehen.
Die Frequenz 315 MHz gehört in Europa den Militärs und ist für Militärische Anwendungen reserviert.
Das kannst Du auch im Frequenznutzungsplan der Bundesnetzagentur nachlesen:
http://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Frequenznutzungsplan.pdf?__blob=publicationFile

Weiß jemand ob  das Auslesen der Sesnoren mir 315Mhz RF transmitter and receiver möglich ist ?

Das von Dir verlinkte Set arbeitet mit Amplitudenmodulation und On/Off-Keying.

Wenn Dein Sender dieselbe Modulationsart verwendet, kann es möglich sein.

Wenn Dein Sender stattdessen mit Frequenzmodulation oder einer anderen Modulation arbeitet, ist es damit Essig.

Wenn Du kein Funkamateur mit einer entsprechend ausgerüsteten HF-Funkwerkwerkstatt bist, um die Modulation auf dieser Frequenz auf einem Oszilloskop sichtbar zu machen, erfragst Du besser beim Hersteller des Systems, mit welcher Modulationsart gefunkt wird.

Aber selbst wenn Du in Erfahrung bringen solltest, dass es AM Amplitudenmodulation ist, kannst Du damit das Signal mit so einer Art Empfänger noch lange nicht auslesen, wenn Du nicht weißt, auf was für Sendemuster Du achten müßtest. Denn der im Set enthaltene Empfängertyp "Regenerativempfänger" empfängt immer etwas, und sei es zufälliges Rauschen. Der arbeitet nämlich nach dem Prinzip: Wenn Du nichts empfängst, regele die Verstärkung hoch, bis Du etwas empfängst. Und daher empfangen diese Empfänger immer etwas, selbst wenn nichts an Signal da ist. Und es wäre die Sache Deiner Auswertelogik, zwischen "Nichts" und "Nutzsignal" zu unterscheiden, wenn ständig Daten hereinkommen.
30  International / Deutsch / Re: Anfängerfrage zum Umgang mit Variablen (Übergabe des hex code) on: July 16, 2014, 04:11:42 am
Was muss ich unternehmen, das transvar den INHALT von variable1 übernimmt??!! Das war meine Frage?

Du hast es immer noch nicht gerafft.

Code:
SPI.transfer(119);
ist absolut dasselbe wie
Code:
SPI.transfer(0x77);
ist absolut dasselbe wie
Code:
SPI.transfer(0b1110111);

Das ist alles genau dasselbe.

Und wenn Du einen Wert an eine Variable durch Zuweisung übergibst, steht in der übergebenen Variablen auch dasselbe drin.

Beispiel zum Testen:
Code:
void testFunktion(int parameter){
  Serial.println("Dreimal dieselbe Zahl ausgeben:");
  Serial.print("DEC = "); Serial.println(parameter,DEC);
  Serial.print("HEX = "); Serial.println(parameter,HEX);
  Serial.print("BIN = "); Serial.println(parameter,BIN);
}


const int variable1=0x77;

void setup() {
  Serial.begin(9600);
  int andereVariable=variable1;
  testFunktion(andereVariable);
}

void loop() {}
Pages: 1 [2] 3 4 ... 191