Show Posts
Pages: 1 [2] 3
16  International / Deutsch / Re: Besucherzähler / infrarot Lichtschranke on: October 27, 2011, 03:24:27 am
Hier http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=71&products_id=222 gibts übrigens eine schönen Sensor der perfekt geeignet ist für Lichtschranken.
17  International / Deutsch / Re: ATTINY 2313 - Arduino Sketch - Verständissfrage on: October 22, 2011, 09:57:35 am
Hier: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1236434254/52#52 gibts auch was zum Thema Attiny2313. Sollte also gehen.
18  International / Deutsch / Re: ATTINY 2313 - Arduino Sketch - Verständissfrage on: October 22, 2011, 09:25:14 am
Das Sketch hochladen kannst Du am besten mit einem ISP, z.B. mit diesem: http://shop.myavr.de/index.php?sp=article.sp.php&artID=200006. Dann brauchst Du keinen Bootloader auf dem ATtiny, sparst also auch Speicher.
Wenn Du eine angepasste Board-Beschreibung für den ATTINY2313 findest kannst Du direkt mit der Arduino-IDE erbeiten, das ist IMHO viel einfacher als direkt C für den ATtiny zu programmieren.
Hier http://hlt.media.mit.edu/?p=1229 gibts z.B. was um einen ATiny45/85 als Arduino nutzen zu können, evtl. gibts sowas auch für den 2313.
19  International / Deutsch / Re: Arduino geeignet für Keyboard-Encryption? on: October 21, 2011, 02:27:21 am
Ich denke kaum, dass der Arduino genug Rechenleistung hat für die üblichen Verschlüsselungen (PGP o.ä.).
20  International / Deutsch / Re: Arduino geeignet für Keyboard-Encryption? on: October 20, 2011, 08:38:00 am
Hast wohl Angst vor'm Bundestrojaner ... smiley-grin
21  International / Deutsch / Re: falscher Wert im LCD Disply, seriell aber i.o? on: October 19, 2011, 07:43:28 am
Schau in die Doku (http://arduino.cc/en/Reference/LiquidCrystalPrint) genau so ist es:
lcd.print(temperatur, DEC);
22  International / Deutsch / Re: Fahrtenregler mit Arduino ansteuern on: October 17, 2011, 04:38:12 am
Grundsätzlich funktioniert der Fahrtregler wie ein Servo von der Ansteuerung her. Aber Du musst mal in das Handbuch Deines Fahrtreglers schauen nach irgendwelcher Kalibrierung.
Bei meinem (http://www.conrad.de/ce/de/product/207369/CARBON-SERIES-FAHRTREGLER-MICROCAR/1209051&ref=list also so ähnlich wie Deiner) muss man nämlich zuerst die Nullstellung kalibrieren. Dazu sende ich beim Start meines Sketches (im setup()) erst mal 2 Sekunden myservo.write(90)smiley-wink, dabei gibt der Fahrtregler einen Quittungston aus und kann danach genau wie ein Servo gesteuert werden.
Als Besonderheit habe ich außerdem noch:
- zwischen vor- und zurück fahren muss ich ca. 2 Sekunden stop (90) senden
- ich kann nicht den vollen Bereich zwischen 0 (voll zurück) und 180 (voll vor) steuern, das liegt aber evtl. auch an meinen Motoren. Zwischen 0 und ca. 60 habe ich z.B. keine Bewegung, danach wird recht schnell (ab ca. 80) die maximale Geschwindigkeit erreicht.
Aber das ist wie gesagt m.E. alles vom konkreten Regler abhängig und kein Arduino-Problem.
 
23  Forum 2005-2010 (read only) / Troubleshooting / Re: 0021 ubuntu 10.10 64bit on: November 01, 2010, 04:16:26 pm
I have the same problem on Ubuntu 10.04 32bit, works fine with 018 from PPA but not with any other version downloaded from arduino.cc. I also tried to symlink avrdude and .conf.
(Arduino Duemilanove (atmega328))
24  Forum 2005-2010 (read only) / Deutsch / Re: LED-Anzeige on: January 16, 2011, 04:43:16 pm
Das ist doch genauso ein Nachbau, warum kauft Ihr nicht bei den "offziellen" Quellen (Liste hier: http://arduino.cc/en/Main/Buy), ist auch nicht viel teurer und man weiß was man kriegt.
25  Forum 2005-2010 (read only) / Deutsch / Re: Problem mit Timer (Interrupt) on: January 17, 2011, 03:04:26 am
Ich hab's gestern abend noch alleine lösen können. Irgendwo hatte ich mal gelesen, dass man in einer ISR so wenig wie möglich machen soll, also hab ich den ganzen Anzeige-Kram da raus genommen und zähle in der ISR nur noch Sekunden und Minuten, der Rest ist im Main-Loop. Jetzt läuft es.
26  Forum 2005-2010 (read only) / Deutsch / Problem mit Timer (Interrupt) on: January 16, 2011, 03:59:03 pm
Hallo,

ich habe ein Problem mit Timer Interrupts auf einem Duemilanove (Atmega 328). Folgendes Programm:
Code:
#include <Servo.h>
#include <LiquidCrystal.h>

unsigned int tcnt2;
int int_counter = 0;

int minute = 59;
int sekunde = 60;

Servo myservo;
LiquidCrystal lcd(12, 6, 5, 4, 3, 2);

int p1 = 0;
int p2 = 0;
int p3 = 0;
int p4 = 0;
boolean kiste = false;
 
void setup()
{
  /* First disable the timer overflow interrupt while we're configuring */  
  TIMSK2 &= ~(1<<TOIE2);  
  
  /* Configure timer2 in normal mode (pure counting, no PWM etc.) */  
  TCCR2A &= ~((1<<WGM21) | (1<<WGM20));  
  TCCR2B &= ~(1<<WGM22);  
  
  /* Select clock source: internal I/O clock */  
  ASSR &= ~(1<<AS2);  
  
  /* Disable Compare Match A interrupt enable (only want overflow) */  
  TIMSK2 &= ~(1<<OCIE2A);  
  
  /* Now configure the prescaler to CPU clock divided by 128 */  
  TCCR2B |= (1<<CS22)  | (1<<CS20); // Set bits  
  TCCR2B &= ~(1<<CS21);             // Clear bit  
  
  /* We need to calculate a proper value to load the timer counter.
   * The following loads the value 131 into the Timer 2 counter register
   * The math behind this is:
   * (CPU frequency) / (prescaler value) = 125000 Hz = 8us.
   * (desired period) / 8us = 125.
   * MAX(uint8) + 1 - 125 = 131;
   */  
  /* Save value globally for later reload in ISR */  
  tcnt2 = 131;    

  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  kisteZu();
  lcd.begin(16, 2);
  anzeige("Hallo!", 0);
  delay(2000);
  anzeige("Herzlichen", 1);
  delay(2000);
  anzeige("Glueckwunsch!", 1);
  delay(2000);
  lcd.clear();
  anzeige("Findet den Code", 0);
  anzeige("und oeffnet die", 1);
  delay(3000);
  lcd.clear();
  anzeige("Kiste. Ihr habt", 0);
  anzeige("aber nur eine", 1);
  delay(3000);
  lcd.clear();
  anzeige("Stunde Zeit.", 0);
  anzeige("Also beeilt Euch", 1);
  delay(3000);
  
  lcd.clear();
  /* Finally load end enable the timer */  
  TCNT2 = tcnt2;  
  TIMSK2 |= (1<<TOIE2);  
}

 
void loop()
{
  if (!kiste) {
    p1 = lesePoti(0);
    p2 = lesePoti(1);
    p3 = lesePoti(2);
    p4 = lesePoti(3);

    lcd.setCursor(0,0);
    lcd.print("Code: ");
    lcd.print(p1, DEC);
    lcd.print(":");
    lcd.print(p2, DEC);
    lcd.print(":");
    lcd.print(p3, DEC);
    lcd.print(":");
    lcd.print(p4, DEC);
    if (p1 == 1 && p2 ==2 && p3 == 3 && p4 == 4) {
      kisteAuf();
    }
    delay(100);
  } else {
    anzeige("Geschafft!", 0);

    delay(10000);
  }
}

void kisteAuf()
{
  // disable timer
  TIMSK2 &= ~(1<<TOIE2);
  lcd.clear();  
  kiste = true;
  lcd.setCursor(0,1);
  lcd.print("Kiste ist: auf");
  myservo.write(0);
  delay(2000);
}

void kisteZu()
{
  lcd.setCursor(0,1);
  lcd.print("Kiste ist: zu ");
  myservo.write(45);
}

int lesePoti(int nr)
{
  int val = analogRead(nr);
  delay(10);
  return map(val, 0, 1023, 0, 9);
}

void anzeige(char* s, byte zeile)
{
  lcd.setCursor(0,zeile);
  lcd.print(s);
}

ISR(TIMER2_OVF_vect) {  
   /* Reload the timer */  
   TCNT2 = tcnt2;  
   int_counter += 1;
   if (int_counter == 1000) {
     int_counter = 0;
     sekunde--;
     if (sekunde == 0) {
       minute--;
       sekunde = 59;
     }
     lcd.setCursor(0,1);
     lcd.print("Zeit:");
     lcd.setCursor(11,1);
     if (minute < 10) {
       lcd.print(0);
     }
     lcd.print(minute);
     lcd.print(":");
     if (sekunde < 10) {
       lcd.print(0);
     }
     lcd.print(sekunde);
   }
}
Ist der Timer aus läuft alles wunderbar. In der ersten Zeile auf dem LCD-Display wird der Wert von 4 Potis angezeigt, in der zweiten Zeile läuft eine Uhr rückwärts.
Ist der Interrupt aktiv läuft das Programm auch ordentlich an, aber nach ca. 10-60 Sekunden (unbestimmte Zeit) wird auf dem LCD nur noch Schrott angezeigt (komische Zeichen, blinkender Cursor usw.):

Offenbar gibt es einen Konflikt zwischen dem Timer und irgendeiner anderen Arduino-Funktion. Aber wo? Und wie kann ich das Problem lösen?
Danke für jede Hilfe, das ganze muss in 4 Tagen laufen (Geburtstagsgeschenk).
27  Forum 2005-2010 (read only) / Deutsch / Re: Arduino ohne externen Quarz Probleme on: December 08, 2010, 07:10:46 am
Ist vielleicht die Baudrate zu hoch für interne Taktung? Wie kann ich die verringern?
28  Forum 2005-2010 (read only) / Deutsch / Arduino ohne externen Quarz Probleme on: December 07, 2010, 03:40:04 pm
Hallo,

wie schon hier http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1291624299/all beschrieben habe ich Probleme Sketches auf einen Arduino mit interner Taktung zu bekommen. Jetzt habe ich mal die boards.txt verglichen und dabei einige Merkwürdigkeiten festgestellt.
Die Unterschiede vom Duemilanove zu ATmega328 on a breadboard (8 MHz internal clock):
upload.protocol=stk500 vs. arduino
bootloader.path=arduino:atmega vs. atmega
build.core=arduino:arduino vs. arduino

In dem Moment wo der Bootloader auf dem Atmel drauf ist sollte es doch keinen Unterschied machen ob ich interne oder externe Taktung habe, oder? Die Fuses sind doch dann gesetzt und werden nicht bei jedem Sketch neu gesetzt, oder? Also müsste man doch beide Arduinos gleich laden können?
Warum bekomme ich da keine Kommunikation mit dem Atmel hin?

29  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich nicht programmieren on: December 07, 2010, 07:04:49 am
Was passiert eigentlich wenn man einen auf "interner Takt" gefuseten Atmel mit einem Quarz beschaltet? oder anders gefragt, könnte ich meinen Atmel auf mein Duemilanove-Board stecken und versuchen ihn dort mit 'nem Sketch zu laden?
30  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich niht programmieren on: December 06, 2010, 07:53:53 am
Ich hab den Bootloader für internen Oszillator gebrannt. Die Verdrahtung ist auch wie in dem Link oben angegeben (Arduino RX - Atmel RX und Arduino TX - Atmel TX) zusätzlich Reset (hatte ich am Anfang nicht dran, ging aber auch nicht).

Kann man denn aus der Tatsache, dass die LED an Pin 13 (Atmel Pin 19) einmal blinkt bei Reset folgern dass der Bootloader läuft?
Pages: 1 [2] 3