Show Posts
Pages: 1 [2] 3 4
16  International / Deutsch / Re: Frage zum Blinkenlightshield on: December 22, 2012, 02:01:49 pm
Quote
Das sind pin 0 und pin 13 die leuchten.
das leuchten des pin13 kommt von dem Sketch (Blink.pde  -> Basics aus IDE.0023)
die zwei Zeilen, die Udo in dem Beispiel angibt ändern auch nichts, ausser das pin13 nicht leuchtet. Auf dem Foto sieht man leider nicht, das pin1 auch leuchtet (ungefähr 2/3 dunkler als pin0)
Gruß Erhard
17  International / Deutsch / Re: Frage zum Blinkenlightshield on: December 22, 2012, 10:18:48 am
Quote
Du meinst einen Arduino DUE?
eigentlich meinte ich den Duemilanove.
Quote
Wie Hast Du den Widerstand und LED angeschlossen: Ausgang und Masse, 3,3V oder 5V?
zwischen Ausgang (PIN 0 bzw. PIN 1 Rx, Tx) und GND
Quote
Dein Problem sieht aber nicht zufällig etwa so aus wie hier...
leider nicht  smiley-confuse ; bei mir blinken die LEDs auf dem Shield während dem Upload nicht (Fehlermeldung hatte hier schon gepostet). Nach dem Abziehen des Jumper funktioniert der Upload und LEDs (Shield) leuchten ständig, anbei die Fotos.

auf dem 3.Foto sieht man rechts die LEDs (PIN1 leuchtet etwas schwächer, PIN13-15 blinken abwechselend(ist so gewollt))
18  International / Deutsch / Re: Frage zum Blinkenlightshield on: December 20, 2012, 04:46:50 pm
Habe mir nen original Uno (UNO smd R3) besorgt, hier ist Problem das gleiche smiley-mad. Ich habe zum Testen eine LED mit einem 1k Widerstand auf dem Board (Due.. PIN 0, bzw.1) angeschlossen, die leuchtet auch, bei dem Shield habe ich zum tesen eine ext. Spannung angeschlossen (6V) und ohne Board  smiley-wink hier leuchtet nur immer die LED, die auswähle. Setze jetzt die beiden LEDs mit digitalWrite auf LOW.
19  International / Deutsch / Re: Frage zum Blinkenlightshield on: December 15, 2012, 10:14:33 am
ich habe das Board nochmal genauer unter die Lupe genommen. Zwischen den Rx(0) und Tx(1) Pins und dem FT232 IC (Pin 1 und 5) sind (472/4k7) Widerstände und bei den LEDs auf dem Board und dem IC (PIN 22 und 23) (102/1k) Widerstände. Der Sketch lässt sich nach Abziehen des Jumpers laden, nach Aufstecken leuchten die LEDs 0 und 1 auf dem Shield trotzdem. Ist der Austausch der 4k7 Widerstände sinnvoll ?
20  International / Deutsch / Re: Frage zum Blinkenlightshield on: December 13, 2012, 04:54:45 pm
Hallo zusammen,
 als Sketch zum Testen habe ich folgendes (blink.pde)  IDE0023:
void setup()
{               
  pinMode(13, OUTPUT);     
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}
das Abziehen des Jumpers bringt soweit Erfolg, das sich der Sketch laden lässt, nach dem Aufstecken läuft der Sketch. (LED 13 auf dem Board und auf dem Shiled blinkt), allerdings leuchten die LED 0 und 1 auf dem Shield weiter, die Rx und Tx LED auf dem Board bleiben nach dem Upload aus (blinken während des Upload, das Shield bleibt ohne Jumper dunkel). Die beiden Widerstände auf dem Board haben die Bezeichnung 472 (4k7), auf dem Shield sind alles 102 (1k).
21  International / Deutsch / Frage zum Blinkenlightshield on: December 12, 2012, 04:27:08 pm
Hallo zusammen,
das Blinkenlightshield ärgert mich ;-)
als Board verwende ich ein Duemilanove(DFudino/DFRobot), IDE 0023, Jumper auf dem Shield ist auf GND/CC gesetzt.
Wenn ich einen Sketch lade (z.B. blink.pde) erhalte ich folgende Fehlermeldung:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

die LED 0 und 1 leuchten ständig (1 etwas schwächer). Lade ich den Sketch ohne Shield und stecke das Shield danach auf funzt es (LED 0 und 1 leuchten, sollten aber nicht, die LED 13 blinkt).
Weiß jemand Abhilfe?
Gruß Arduinokiller
22  International / Deutsch / Re: DS1307 und EEPROM über I2C on: November 26, 2012, 06:11:04 pm
Hallo Uwe,

danke für den sehr interessanten Link. Ziel ist es bestimmte Daten (String) in das externe EEPROM zu schreiben. Die Strings sollen nach Aufruf des entsprechenden Menüs immer an die gleichen Adressen geschrieben werden (z.B. String 1 an Adresse 1, String 2 an Adresse 2 etc.), da sie im Sketch nach Aufforderung immer direkt ausgelesen werden sollen (Stringinhalt wird normal nicht geändert / Abruf erfolgt nur nach Änderung bzw. Reset). Ich werde mal den Sketch auf der weiteren Seite des Links ausprobieren, bleibt noch die Frage nach der Uhr. Year auf 2 Stellen verkürzen, einfacher Code?

Danke
23  International / Deutsch / DS1307 und EEPROM über I2C on: November 25, 2012, 11:00:16 am
Hallo zusammen,

die Uhr habe ich am laufen (bisher mit folgendem Code)
Code:
#include <DS1307.h>
#include <ITDB32_Touch.h>
#include <ITDB02_Graph16_1.h>
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
ITDB02        myGLCD(38,39,40,41,ITDB32WC);
ITDB32_Touch  myTouch(6,5,4,3,2);
DS1307 rtc(20, 21);        // Init DS1307 // SDA pin -> Arduino Mega Digital 20, SCL pin -> Arduino Mega Digital 21
int x, y, xo, zo, twt, stst;
Time t;
word yr;
int swz, wsz, tval;
int val_1;
// ---------------------------------------------------------------------------------------------------------------------
void setup()
{
  myGLCD.InitLCD(LANDSCAPE);
  myGLCD.clrScr();
  myTouch.InitTouch(LANDSCAPE);
  myTouch.setPrecision(PREC_LOW);
  delay(50);
  }
void loop()
  { // void loop Anfang
 run:
    t = rtc.getTime();  // Uhr
    myGLCD.setColor(0, 0, 0);
    myGLCD.setBackColor(225, 225, 225);
    myGLCD.setFont(BigFont);
    myGLCD.print(".", 40, 30);
    myGLCD.print(rtc.getTimeStr(), 8, 10);                 // Zeitdaten
    myGLCD.print(rtc.getDateStr(FORMAT_SHORT), 8, 50); // 232, 10) // 312, 10);  // Datum
    myGLCD.print(rtc.getDOWStr(FORMAT_SHORT), 8, 30); // 190, 10) //286, 10);    // Wochentag
  }
[/size]
habe dann versucht ein externes EEPROM über I2C ansprechen
Code:
#include <EEPROM.h>
#include <Wire.h>
#define eeprom 0x50

void setup()
....
EEPROM.write(0, stBegin[8]);
...
[/size]
sobald ich in void setup die Zeile Wire.begin(); mit einfüge, zeigt mit die Uhr seltsame Zeiten an (27:85:85) als Wochentag xx und beim Datum
85.85.@5, die Uhr steht, das EEPROM lässt sich aber mit entsprechenden Codezeilen (Wire.send) etc. ansprechen.

mit folgendem Code läufts:
Code:
#include <ITDB32_Touch.h>
#include <ITDB02_Graph16_1.h>
#include <EEPROM.h>
#include <Wire.h>
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
ITDB02        myGLCD(38,39,40,41,ITDB32WC);
ITDB32_Touch  myTouch(6,5,4,3,2);
const byte EEPROM_ID = 0x50;
const byte DS1307_CTRL_ID = 0x68;
const byte NumberOfFields = 7;
int Second, Minute, Hour, WDay, Day, Month, Year, x;
unsigned int address = 0;
// ---------------------------------------------------------------------------------------------------------------------
void setup()
  {
    Serial.begin(9600);
    Wire.begin();
    schreibeEEPROM(EEPROM_ID, address, strchar);
    myGLCD.InitLCD(LANDSCAPE);
    myGLCD.clrScr();
    myTouch.InitTouch(LANDSCAPE);
    myTouch.setPrecision(PREC_MEDIUM);
    myGLCD.setColor(200, 200,200);
    myGLCD.setFont(BigFont);
    myGLCD.print(":", 30, 10);
    myGLCD.print(":", 70, 10);
    //myGLCD.print(".", 30, 30);
    myGLCD.print(".", 30, 50);
    myGLCD.print(".", 70, 50);
    char value[8]="*1050#";
    char strchar[8]="#1050*";
  }
// ==============================( DRAW Schleifen )==========================

// ===========================( Beginn Hauptschleife ) ======================
void schreibeEEPROM(int I2CEEPROMAdresse, unsigned int address, char strchar[8])
  {
    Wire.beginTransmission(I2CEEPROMAdresse);
    Wire.send(0x00);
    Wire.send(strchar);
    Wire.endTransmission();
    delay(5);
  }
char leseEEPROM(int I2CEEPROMAdresse, unsigned int address)
  {
    Wire.beginTransmission(I2CEEPROMAdresse);
    Wire.send(0x00);
    Wire.endTransmission();   
    Wire.requestFrom(I2CEEPROMAdresse, 1);
 return strchar[8];
 delay(5);
 myGLCD.print(strchar, CENTER, 20);
  }
 
void loop() // void loop Anfang
  { 
   Wire.beginTransmission(DS1307_CTRL_ID);
   Wire.send(0x00);
   Wire.endTransmission();
   Wire.requestFrom(DS1307_CTRL_ID, NumberOfFields);

   Second = bcd2dec(Wire.receive() & 0x7f);
   Minute = bcd2dec(Wire.receive() );
   Hour   = bcd2dec(Wire.receive() & 0x3f);
   WDay   = bcd2dec(Wire.receive() );
   Day    = bcd2dec(Wire.receive() );
   Month  = bcd2dec(Wire.receive() );
   Year   = bcd2dec(Wire.receive() );
   Year   = Year + 2000;

   Serial.print(address);
   Serial.print("\t");
   Serial.print(strchar);
   Serial.println();
   digitalClockDisplay();
   delay(990);
  }
// -------------------------------------------------------------------
  byte bcd2dec(byte num)
  {
    return ((num/16*10) + (num%16));
    return (WDay);
  }
 
  void digitalClockDisplay()
  {
    myGLCD.setBackColor(225, 225, 225);
    myGLCD.setColor(0, 0, 0);
    myGLCD.setFont(BigFont);
    if (Hour<10)
    {
      myGLCD.print("0", 0, 10);
      myGLCD.printNumI(Hour, 16, 10);
    }
    else
    {
      myGLCD.printNumI(Hour, 0, 10);
    }
    if (Minute<10)
    {
      myGLCD.print("0", 40, 10);
      myGLCD.printNumI(Minute, 56, 10);
    }
    else
    {
      myGLCD.printNumI(Minute, 40, 10);
    }
    if (Second<10)
    {
      myGLCD.print("0", 80, 10);
      myGLCD.printNumI(Second, 96, 10);
    }
    else
    {
      myGLCD.printNumI(Second, 80, 10);
    }
    if (WDay==1)
      {
        myGLCD.print("Mo.", 0, 30);
      }
    if (WDay==2)
      {
        myGLCD.print("Di.", 0, 30);
      }
    if (WDay==3)
      {
        myGLCD.print("Mi.", 0, 30);
      }
    if (WDay==4)
      {
        myGLCD.print("Do.", 0, 30);
      }
     if (WDay==5)
      {
        myGLCD.print("Fr.", 0, 30);
      }
    if (WDay==6)
      {
        myGLCD.print("Sa.", 0, 30);
      }
    if (WDay==7)
      {
        myGLCD.print("So.", 0, 30);
      }
  if(Day<10)
  {
    myGLCD.print("0", 0, 50);
    myGLCD.printNumI(Day, 16, 50);
  }
  else
  {
    myGLCD.printNumI(Day, 0, 50);
  }
  if(Month<10)
  {
    myGLCD.print("0", 40, 50);
    myGLCD.printNumI(Month, 56, 50);
  }
  else
  {
    myGLCD.printNumI(Month, 40, 50);
  }
  myGLCD.printNumI(Year, 80, 50);
  myGLCD.print(strchar, CENTER, 20);
  }
[/size]
ist es möglich, das ganze einfacher zu gestalten, bzw. zumindest die Jahresanzeige auf zwei Stellen zu verkürzen (12 statt 2012) ?
24  International / Deutsch / Re: Probleme mit Programmcode für Türschloßprojekt on: November 18, 2012, 11:29:20 am
Quote
wie Arduinokiller einmal einen Stern als 42 kriegen kann ist mir klar. Merkwürdig ist mir, wie er aber aus  "*10" eine "4210" (statt z.B. "424948" , weil eine '1' hat den ASCII-wert 49 (0x31)  genauso wie '*' den Wert 42 hat.
Sorry, der Sketch hat mir einmal "42100035" (*1000#) angezeigt, warum auch immer. Bei weitern Versuchen und Änderungen im Sketch bekam ich meisten eine Summe angezeigt z.B. "270" (egal ob ich *1000# oder *0001# eingegeben habe).
25  International / Deutsch / Re: String abfragen ? on: November 18, 2012, 11:22:05 am
@michael_x
Danke

das mit dem im eeprom speichern möchte ich umsetzen ( der Wert von stBegin soll beim ersten Starten auf z.B. *1000# gesetzt werden, und im EEPROM auf der Adresse 0 gespeichert werden). Bei einer Änderung soll dann der neue Wert (z.B. *1100#) den alten Wert im EEPROM überschreiben, die Initalisierung des alten Wertes in void setup wird vorher gelöscht. Allerdings bring ich das mit dem EEPROM nicht zu laufen.
Ich habe auf dem Mega-Board ein Shield für den TFT, auf dem Shield ist eine DS1307, die über den I2C-Bus angesprochen wird. Soblad ich in void setup 'Wire.beginn..' einsetze, zeigt mir die Uhr als Zeit '27:85:85', beim Wochentag 'xx' und beim Datum '85.85.@5', anbei der Codeausschnitt.

Code:
#include <ITDB32_Touch.h>
#include <ITDB02_Graph16_1.h>
#include <DS1307.h>
#include <EEPROM.h>
#include <Wire.h>
#define eeprom 0x50;
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
ITDB02        myGLCD(38,39,40,41,ITDB32WC);
ITDB32_Touch  myTouch(6,5,4,3,2);
DS1307 rtc(20, 21);        // Init DS1307 // SDA pin -> Arduino Mega Digital 20, SCL pin -> Arduino Mega Digital 21
int x, y, xo, zo, twt, stst, swz, wsz, tval, val_1;
Time t;
word yr;
char stCurrent[20]="";
int stCurrentLen=0;
char stLast[20]="";
char stBegin[8]="*1000#";
// ---------------------------------------------------------------------------------------------------------------------
void setup()
  {
    myGLCD.InitLCD(LANDSCAPE);
    myGLCD.clrScr();
    myTouch.InitTouch(LANDSCAPE);
    myTouch.setPrecision(PREC_MEDIUM);
    myGLCD.setColor(255, 255, 255);
    myGLCD.setBackColor(0, 0, 0);
    myGLCD.setFont(SmallFont);
    delay(50);
    myGLCD.filoScr(0,0,139,69, 225,225,225);
    rtc.halt(false);
    // Wire.begin();
  }
26  International / Deutsch / Re: Probleme mit Programmcode für Türschloßprojekt on: November 17, 2012, 03:46:49 pm
Hallo,
ich kämpfe mich gerade durch ein ähnliche Problem (siehe String abfragen ?). In meinem Sketch habe dann auch 'atoi' ausprobiert, es wurde mir hier dann der Wert 35 (ascii für #) bzw. 42 (ascii für *) ausgegeben, also "421000" für "*1000", allerdings hat mich das ganze nicht richtig weitergebracht. smiley-sad-blue
27  International / Deutsch / Re: String abfragen ? on: November 17, 2012, 03:31:24 pm
Hallo zusammen,

nachdem ich mit
Quote
char* p = "1000";
int number = *p++ - '0'; // number sollte den Wert 1 haben und p auf das nächste Zeichen zeigen
while (*p != 0) number = number*10 + *p++ - '0'; // usw. bis der string zu Ende ist
und
Quote
atoi
irgendwie nicht richtig weiterkommen bin, habe ich folgendes in void loop eingefügt:
         
char stBegin[8]="*1000#";
if (strcmp(stLast, stBegin)==0) // "stLast" ist der über das TFT einegebene String. 

funktioniert  smiley ; jetzt würde mich interessieren, ob man den Inhalt von char stBegin[8]... ändern kann, ohne das Programm neu zu laden.
Ich würde den Wert gerne in einer Funktion haben, der Wert soll im externen EEPROM gespeichert werden, beim Starten abgerufen, bei evtl. Änderung neu in das EEPROM geschrieben werden und als neuer Wert im laufendem Betrieb, bzw. bei einem Neustart wieder zur Verfügung stehen  [/size]
28  International / Deutsch / Re: String abfragen ? on: November 09, 2012, 07:30:55 am
Quote
Hast du den string "1000" nicht noch als Zahl, die du in ein char [] geschrieben hast?
nein, da der Inhalt des strings erst beim Tippen auf dem Touch erzeugt wird.

Quote
erzeugt Müll wenn der string was anderes ausser Ziffern '0' ... '9' enthält. Nur als Prinzip...
in der "Endversion" sollten auch Buchstaben und Zeichen (*, #) abgefragt werden können.

Quote
Warum nicht einfach atoi nutzen?
was bitte ist "atoi" ?
29  International / Deutsch / String abfragen ? on: November 09, 2012, 04:18:54 am
Hallo zusammen,
ich steh mal wieder auf dem Schlauch. Ich möchte einen String nach einem bestimmten Inhalt abfragen und komme nicht weiter. Als Basis verwende ich
ITDB02_Touch_Button Test (von H.K.); wenn auf dem Display z.B. "1000" (Inhalt des Strings) steht, soll nach antippen von "ENTER" ein bestimmter Text auf dem Display erscheinen, ansonsten ein alternativer Text. Mit einer if Abfrage gehts anscheinend nicht (Umwandlung von char* in int* nicht möglich).
Kann mir jemand nen Tipp geben ?
Gruß und Danke
30  International / Deutsch / Re: TFT Push Buttons on: November 07, 2012, 12:42:35 pm
Hallo,

 
myGLCD.setBackColor (0, 0, 255);
  myGLCD.setColor(255, 255, 255);
  myGLCD.print("BAD", 10, 20);
  myGLCD.fillRoundRect (190, 15, 240, 40);
  myGLCD.drawRoundRect (190, 15, 240, 40);


hier die Reihenfolge ändern, zuerst das Rechteck füllen, dann beschriften, sonst sieht man die Schrift nicht;

if ((y>=15) && (y<=120))  // Upper row
      {
        if ((x>=190) && (x<=240))  // Button: Bad ON


hier und bei den weiteren Abfragen (if) die Werte anpassen (Upper Row y>=15  y<=40, x Werte entsprechend, gleiche Werte wie bei draw und fill);
Pages: 1 [2] 3 4