Show Posts
Pages: 1 ... 60 61 [62] 63 64 ... 203
916  International / Deutsch / Re: Inbetriebnahme Atmega324P-20AU - Bootloader brennen on: December 12, 2013, 10:09:03 am
Quote
This means that you will need to click the Erase Chip box before you can write whatever you were writing
Soll wohl heissen, dass der flash erst gelöscht werden muss, bevor er beschrieben werden kann.
Das ist allerdings der Normalfall.

Die Aduino IDE enthält und verwendet übrigens dafür avrdude ( sicher auch auf ApfelRechnern )
Dort gibt es die Option  -D  explizit, mit der das Löschen des Flash verhindert werden könnte und die
-e Option, mit der der komplette Flash gelöscht wird.

Am einfachsten machst du dich mit avrdude vertraut, indem du
a) In der Arduino IDE  "Ausführliche Anzeige während Upload" aktivierst und dir ansiehst, was passiert.
b) Einfache Kommandos von Hand ausführst:
       avrdude -C .\etc\avrdude.conf -P COM4 -p m324p -vvv -U signature:r::m
   liest z.B. (auf einem Windows-Rechner) nur die Signatur, und zeigt, ob du mit dem Chip überhaupt reden kannst.

Oder ob du
    avrdude: stk500_getsync(): not in sync: resp=0x00
bekommst, wenn gar kein Arduino an der seriellen Schnittstelle hängt. smiley-wink

Den bootloader kannst du auch mit avrdude direkt brennen, wenn du die .hex Datei hast.
917  International / Deutsch / Re: DS1307 Anfängerprobleme on: December 12, 2013, 09:28:20 am
Ich habe mehrere DS1307 Module und fürchte, ich China gibt es irgendwo eine große Kiste mit 32768kHz Quarzen,
die zwar schwingen, aber die üblichen 20 ppm nicht erfüllen.
Wer also billigste DS1307 Module baut, bedient sich dort und spart  2 ct in den Herstellungskosten...

Für Anwendungen, die alle halbe Jahre (Sommer/Winter) die Zeit neu einstellen und wo es bis dahin auf ein paar Minuten nicht so ankommt (z.B. AquariumsBeleuchtung mit Sonnenuntergangsprogramm) , passt ein ordentlicher DS1307 hervorragend.
(20 ppm = 2 sec/Tag). Einer meiner Module ist deutlich besser, andere schlechter.

Die DS3231 verspricht immerhin +- 2 ppm
( ~ 5 sec/Monat ) bei moderaten Umweltbedingungen.

Wenn du in sec/Jahr rechnest, solltest du evtl. eine DS1307 nur als Backup eines DCF77 Funkuhr-Moduls oder einer anderen externen Quelle in Betracht ziehen. Eine RTC liefert immerhin die aktuelle Zeit innerhalb der ersten Sekunde nach dem Einschalten (DCF77 braucht im optimalen Fall 2 Minuten).

918  International / Deutsch / Re: MOSFET die richtige entscheidung??? on: December 11, 2013, 11:17:32 am
So was ?


Vreed sind 5V, wenn der Reed Kontakt geschaltet ist. Wenn der Arduino aus ist, sollte QR durchgeschaltet sein und durch RL (ca 470 Ohm) 10 mA fliessen.
Ist der Arduino an, sperrt das Signal Arduino_DisableReed den Transistor und ArduinoControl kann übernehmen.
919  International / Deutsch / Re: setup() erneut ausführen on: December 11, 2013, 09:27:43 am
Wenn man denkt, dass man durch erneutes Aufrufen von setup() sowas wie ein Soft-Reset hinkriegt, liegt man total daneben.

In der Regel wird setup einfach so geschrieben, dass man  es nur einmal aufrufen  von main aufgerufen werden  sollte:
z.B:
Code:
void setup() {
   Serial.begin(115200); // geht davon aus, dass Serial vorher noch nie verwendet wurde
}

Ansonsten haben natürlich alle anderen auch Recht:
- kann man machen
- soll man nicht machen
- schlechter Stil

920  International / Deutsch / Re: GSM Shield SMS als Mail weiterleiten on: December 11, 2013, 09:04:01 am
Quote
error: no match for 'operator+=' in 'SMSText += String(c)'
Kann er nun nicht konvertieren, oder wo liegt der Fehler jetzt?
Na, der Fehler heisst, man kann kein  +  auf SMSText und String(c) anwenden. ( und schon gar kein += )

Du hast nicht verraten, was SMSText ist, aber meine Kristallkugel sagt mir, dass es zum Glück wohl kein String Objekt ist.
Bei char Array  braucht man so ein kompliziertes += gar nicht.

Code:
char* getSMS( )
{
 static char SMSText[160];
 byte pos =0;
 char c;
 while ( ( c = sms.read() ) != 0 )  // mal geraten, dass sms.read() so verwendet wird...
    SMSText[pos++] = c;
 SMSText[pos]= 0;  // Endekennung
 Serial.println(SMSText);  // z. Test
 return SMSText;
}
921  International / Deutsch / Re: Brauchbarer Neigungssensor gesucht on: December 11, 2013, 08:38:25 am
Hm, als Hobbysegler weiss ich, dass es keine Kunst ist, Schräglage zu erkennen,
aber etwas Übung erfordert, das Schiff genau gegen die Wellen zu stellen.
(Oder will ich das Schiff lieber gegen den Wind stellen, um keine Schräglage zu haben ?)

Ganz Generell ist Sensoren erfassen nur eine der nötigen Voraussetzungen für eine erfolgreiche Regelung...

Aber zurück aus dieser off-topic Diskussion:
Quote
Brauchbarer Neigungssensor gesucht
Bevor du mit "Zylindern mit Kügelchen drin" experimentierst, solltest du dir tatsächlich mal das MPU-6050 ansehen.
Da stimme ich sschultewolter zu.
922  International / Deutsch / Re: Tlc 5940 RGB Fading on: December 09, 2013, 12:35:46 pm
Quote
grünes licht geht an und mischt sich zu gelb
und das 500 ^ 5 =  31 Billionen mal ???

(Kann auch sein, dass ich mich um einen Faktor 106 vertan hab, egal ... )
923  International / Deutsch / Re: Brauchbarer Neigungssensor gesucht on: December 09, 2013, 12:24:16 pm
MPU-6050 im "maritimen Einsatz" wurde auch hier diskutiert :
http://forum.arduino.cc/index.php?topic=159139.msg1192482#msg1192482

in deinem Fall ist, fürchte ich, nicht das Erkennen der Schräglage, sondern die Regelung (wie Gegensteuern ?), das größere Problem.
924  International / Deutsch / Re: Nikolausi / Werbung in eigener Sache on: December 09, 2013, 11:28:16 am
*** Juchhu ***
Dann bleib ich erstmal bei meinen bescheidenen "Protoboard-Lötkünsten für Notfälle",
und hab doch ein tolles Spielzeug für mich und meinen Reserve-Uno.
925  International / Deutsch / Re: Tlc 5940 RGB Fading on: December 09, 2013, 09:48:43 am
Gib wenigstens den Schleifenvariablen andere Namen.
Vielleicht kann man dann verstehen, was  die 7 verschiedenen Variablen ( c,a,b,c,a,b,a ) sollen ?
926  International / Deutsch / Re: Mp3 Player mit Arduino versorgen on: December 09, 2013, 03:49:52 am
ich habe hier einen alten MP3 Player mit dem ich gerne etwas rumexperimentieren möchte, aber ich scheitere schon daran das Teil ohne Batterie (1x 1,5 V AAA) ans laufen zu bekommen. Gibt es eine Möglichkeit den MP3 Player vom Arduino (UNO) mit Strom zu versorgen, vielleicht mit PWM?!?
Das ( Arduino als 1.5V Stromversorgung ) ist ja jetzt vom Tisch.
Vielleicht ist eine 1.5V Batterie erstmal das einfachste, bevor du großen Aufwand in Step-Down-Wandler steckst ?
Was willst du sonst noch rumexperimentieren ?  Das wird doch sicher interessanter als die Stromversorgung... smiley
927  International / Deutsch / Re: kurze frage: 8 byte in double im Arduino Duemilanove möglich? on: December 07, 2013, 04:02:04 pm
Quote
Wenn nicht , welche alternativen gibt es?

Wenn die Reihenfolge stimmt, geht das natürlich mit den 4 byte eines float  ( float32 / single oder wie immer der Datentyp bei dir heisst.)

Stichwort union
Code:
union {float f; byte b[4];} data;
int i = 0;
void loop()  {
  while (Serial.available() && i < 4) data.b[i++] = Serial.read(); // fill 4 bytes somehow
  if ( i == 4) workWith (data.f) ; // data.f contains the float representation of the 4 bytes
}

Oder ein float ( oder arduino 4-byte double ) als byte array adressieren:
Code:
float x = 0.5;
byte* p = (byte*) &x;
for (int i = 0; i < sizeof(x); i++)
{ Serial.print(p[i],HEX); Serial.print(' '); }

// p[0]  == 0;  (LSB)
// p[1]  == 0;
// p[2] == 0;
// p[3] == 0x3f; (exponent)

Die Reihenfolge ist auf PC und Arduino gleich, aber nicht auf jeder Hardware ...
928  International / Deutsch / Re: PWM Frequenz am Oszilloskop on: December 05, 2013, 05:11:05 pm
Quote
was natürlich für eine zusätzliche PWM Dimmung von LED nicht so schön ist
Warum ? LED können doch wohl auch 25 kHz vertragen, oder ?
Klar, man braucht es nicht, aber stören sollte es doch auch nicht.
929  International / Deutsch / Re: Mega Comports werden nur selten erkannt on: December 04, 2013, 02:03:20 pm
Quote
Fälschungen wäre also der falsche Begriff, eher Nachbauten, soweit ich das verstanden habe.
Visuell läßt sich kaum ein Unterschied erkennen
Wenn du keinen Unterschied siehst, ist es eine Fälschung.
Wenn du es als "Arduino" angeboten kriegst, ist es illegal.
Wenn es anders heisst und höchstens einen Namen hat, der auf ...duino endet, kann es ein legaler Nachbau sein.
Nachbauten oder Varianten können besser als das Original sein, Fälschungen versuchen das natürlich erst gar nicht.

Das Platinenlayout ist opensource, richtig.   ist ein geschütztes Warenzeichen (... welches ich übrigens hier nicht kopiert habe. Das macht eventuell dein Browser zusammen mit dieser Forumssoftware)

Zum "Com Name Arbiter" gibt es übrigens  hier eine Erklärung und ein Tool.
930  International / Deutsch / Re: Geschwindigkeit eines Encoders mit arduino Mega ausgeben on: December 04, 2013, 12:41:34 am
kraft1 [ i ] = val1 * 0.9765625;  
wofür soll das gut sein ?
Das macht nur aus 10 bit 32 bit und braucht Zeit ...

Die Umrechnung kannst du später noch machen, z.B. in Ausgabe(),  wahlweise erst in Excel beim Auswerten smiley-wink

Auch da
Code:
frequenz= impulse/(float)zeit*1000000L;
    rps= frequenz/10000;     // Durch 10000 teilen, damit ich umdrehungen/sekunde heraus bekomme
    zeiten[i]=millis();      // aktuelle Zeit
    geschwindigkeit[i] = rps * PI;    // geschwindigkeit berechnen
ist nix was nicht später gemacht werden könnte, impulse / loop reicht eigentlich.

Das Ganze auf ganze 500 µs synchronisieren dacht ich mir eigentlich so, dass du in der Messphase einfach wartest, bis 500 µs seit dem letzten mal vergangen sind.

Code:
unsigned int pulszähler[520];
unsigned int val1[520];
unsigned int val2[520];
unsigned int i;  // 0 ... 519 (520 heisst: Messung fertig)
volatile boolean c; // true heisst: Messung läuft   ( Warum die Variable c heisst , weiss wohl keiner mehr ;)
unsigned long letzteMessung; //  micros
#define MESSINTERVALL 500 // µs pro Datensatz, damit aus der Datensatznummer einfach die Zeit bestimmt werden kann.

void loop()
{
   if (c  &&  i < 520)  // Startimpuls war da
   {
      unsigned long zeit = micros();  
      while (zeit - letzteMessung < MESSINTERVALL) { zeit = micros(); }  // warten
      letzteMessung = zeit;
      val1[i] = analogRead(analogPin1);
      val2[i] = analogRead(analogPin2);  
      pulse[i] = getPulsZähler();
      i++;  
   }
   else if ( ( i == 520) && c )
   {
        Ausgabe();  // und Umrechnung auf phys. Werte.
        c = false;
        // i bleibt auf 520 damit das Ganze nicht sofort wieder losgeht ...
   }

}

Da du i nie zurücksetzt, nehme ich mal an, dass du der Einfachheit halber den Reset-Taster zum Scharfschalten verwendest.
Das hab ich so gelassen.
Code:
volatile unsigned int isr_impulse;
unsigned int getPulsZähler()
{
     noInterrupts();
     unsigned int pulse = isr_impulse;
     isr_impulse = 0;
     interrupts();
     return pulse;
}

Was fehlt, ist eine Überwachung, ob loop wirklich rechtzeitig fertig wird ...  bzw, wie gross die Reserve ist, evtl. geht ja sogar
const int MESSINTERVALL=400;

Dass zwischen dem Zeitpunkt von analogRead (...1) und (...2) ca. 120 µs vergehen, ist dir bei der Auswertung sicher bewusst...

Die 520 würden sich als #define ( oder const int ) auch gut machen, zumal ja jetzt auch der RAM besser genutzt wird und 520 also nicht unbedingt das Ende ( auf einem 2560 ) ist.

Und wenn unsigned int zu mühsam zu tippen ist, nimm  word.

edit: code immer in code Tags oder genau auf eckige Klammern aufpassen.
edit2: Auch ohne testen findet man Fehler
Pages: 1 ... 60 61 [62] 63 64 ... 203