Show Posts
Pages: 1 ... 5 6 [7] 8 9 ... 11
91  International / Deutsch / Re: Werte im RAM speichern on: May 16, 2011, 01:19:15 pm
Hallo,

ich würde als erstes ein kleines Programm schreiben und damit 1-2 Byte einer gewählten Adresse mit einer Anfangsadresse (z.B.100) belegen.
Dein eigentliches Programm liest dann diesen Zähler und Speichert ab da dann Deine entsprechenden Werte ab und ändert als Abschluss die Anfangsadresse. Somit kann Du dann über ein weiteres Programm dann die Werte auslesen und Anfangsadresse wieder neu festlegen.

Beispiel schreiben und lesen :

Code:
void EEPROMaus()
{SensorADR=200;
for(i=0;i<4;i++)
{A=byte(Sensor[i] >> 8);
EEPROM.write(SensorADR,A);
SensorADR++;
A=byte(Sensor[i] & 0x0FF);
EEPROM.write(SensorADR,A);
SensorADR++;
}}
void EEPROMein()
{SensorADR=200;
for(i=0;i<4;i++)
{A=EEPROM.read(SensorADR);
SensorADR++;
B=EEPROM.read(SensorADR);
SensorADR++;
Sensor[i]=int (A << 8)+ int(B);
//Serial.println(Sensor[i]);
}}
Die Daten musst Du so aufbereiten, dass sie byteweise abgelegt werden können.

Gruss Kalli
92  International / Deutsch / Re: Anfänger - Hilfe bei DS1820 Temperatur auf LCD bringen. on: May 15, 2011, 12:02:08 pm
ich hab das Ganze hier mit dem UNO und Standardschaltung 4,7k zwischen Daten und Vcc. Funktioniert...

Da musste an Deiner Hardware suchen.

Gruss Kalli
93  International / Deutsch / Re: Anfänger - Hilfe bei DS1820 Temperatur auf LCD bringen. on: May 15, 2011, 11:33:25 am
wenn ich die erste und letzte Zeile entferne, geht die Übersetzung ohne Fehler.

Das müsste ja erstmal klappen.

Gruss Kalli
94  International / Deutsch / Re: Anfänger - Hilfe bei DS1820 Temperatur auf LCD bringen. on: May 15, 2011, 10:08:05 am
Hallo Rene,
da gibt es in der ARDUINO - Umgebung 0022 ein paar Programmbeispiele für DS1820 bzw. DS18B20. Probier die doch erstmal aus.
Selbst verwende ich die DS18B20 seit längerer Zeit ohne Probleme mit dem UNO und Display.
 Unter "Libraries"  scheinen die Dateien unter DALLAS TEMPERATURE zu fehlen.

Gruss Kalli
95  International / Deutsch / Re: Programme für das Touch Display MI0283QT-2 von Watterott on: May 12, 2011, 10:26:37 am
Hallo Mineral,

der programmtechnischen Gestaltung sind bei dem Display kaum Grenzen gesetzt. Bei Watterott gibt es da ein paar Beispiele,
weitere Anwendungen kannst Du auch von mir haben bzw. auch hier im Forum suchen.
Kann es Dir ja an die angegebene E-Mail Adresse schicken.

Ich bin jedenfalls begeistert von den vielen Möglichkeiten.

Gruss Kalli
96  International / Deutsch / Re: Programme für das Touch Display MI0283QT-2 von Watterott on: May 05, 2011, 01:16:11 pm
Ein weiteres Programm ist ein Morseübungsprogramm, was ich schon vorher mal dargestellt habe.
Das letzte Programm ist eine Temperaturanzeige für bis zu 4 Sensoren (DS18B20).



In einem Untermenue kann man den einzelnen Zeilen die Sensoren zuodnen.


und

.
Diese Daten werden dann im EEPROM gespeichert und beim erneuten Programmstart wieder eingelesen.

Leider ist der Code zu lang. Bei Bedarf bitte eine E-Mail Adresse mitteilen, ich schicke es dann zu.


Gruss Kalli

97  International / Deutsch / Programme für das Touch Display MI0283QT-2 von Watterott on: May 05, 2011, 12:50:51 pm
Hallo,

ich habe festgestellt, dass mit einem Touch Display die Darstellung von Programmen wesenlich  besser wird. Man kann mit dem Arduino plötzlich reden, ohne eine Schnittstelle (USB o.ä) zu benutzen.
Ich habe nun schon mehrere Programme zusammengestellt (ich werde mich hüten, zu behaupten, dass ich die Programme selbst geschrieben habe), die mit dem Arduino UNO und dem  Touch Display MI0283QT-2 von Watterott  arbeiten. Weitere Programme, z.b. eine Lade oder Entladeschaltung werde ich nun zusammenfassen und die Funktion und Parametereingabe über Touch Display MI0283QT-2 realisieren.
Ein erstes Programm war eine Darstellung der Farben, damit man die Zuordnung besser findet.

Code:
//Grundprogramm von Watterott
// Stand 17.02.2011
#include <MI0283QT2.h>
#include <ADS7846.h>

#define TP_EEPROMADDR (0x00) //eeprom address for calibration data

MI0283QT2 lcd;
ADS7846 tp;
int lrr=0;
int lrg=0;
int lrb=0;
int lrra;
int lrga;
int lrba;
int y;
unsigned int RgB;
void tp_calibration(uint8_t check_eeprom)
{
  int i;
  CAL_POINT lcd_points[3] = {
    {
      CAL_POINT_X1,CAL_POINT_Y1    }
    ,
    {
      CAL_POINT_X2,CAL_POINT_Y2    }
    ,
    {
      CAL_POINT_X3,CAL_POINT_Y3    }
  }; //calibration point postions
  CAL_POINT tp_points[3], *p;

  //calibration data in EEPROM?
  if(tp.readCalibration(TP_EEPROMADDR) && check_eeprom)
  {
    return;
  }

  //wait for touch release
  lcd.clear(COLOR_WHITE);
  lcd.drawText((lcd.getWidth()/2)-50, (lcd.getHeight()/2)-10, "Calibration", 1, COLOR_BLACK, COLOR_WHITE);
  while(tp.getPressure() > 5){
    tp.service();
  };

  //show calibration points
  i = 0;
  do
  {
    //draw points
    lcd.drawCircle(lcd_points[i].x, lcd_points[i].y, 1, RGB(0,0,0));
    lcd.drawCircle(lcd_points[i].x, lcd_points[i].y, 4, RGB(0,0,0));
    lcd.drawCircle(lcd_points[i].x, lcd_points[i].y, 8, RGB(255,0,0));

    //run service routine
    tp.service();

    //press dectected?
    if(tp.getPressure() > 5)
    {
      tp_points[i].x = tp.getXraw();
      tp_points[i].y = tp.getYraw();
      i++;
      lcd.clear(COLOR_WHITE);
      delay(100);
    }
  }
  while(i<3);

  //calulate calibration matrix
  tp.setCalibration(lcd_points, tp_points);

  //save calibration matrix
  tp.writeCalibration(TP_EEPROMADDR);
}


void setup()
{
  Serial.begin(9600);

  //init Display
  lcd.init(4); //spi-clk = Fcpu/4

    //init Touch-Controller
  tp.init();

  //clear Screen
  lcd.clear(COLOR_WHITE);

  //Touch-Panel Calibration
  tp.service();
  if(tp.getPressure() > 5)
  {
    tp_calibration(0); //dont check EEPROM for calibration data
  }
  else
  {
    tp_calibration(1); //check EEPROM for calibration data
  }

  //Backlight LED
  lcd.led(60); //backlight 0...100%
  lcd.drawText( 2, 2, "BL", 1, COLOR_RED, COLOR_WHITE);
  lcd.drawText(20, 2, 60,   1, COLOR_RED, COLOR_WHITE);

  //Cal text
  lcd.drawText(lcd.getWidth()-30, 2, "CAL", 1, COLOR_RED, COLOR_WHITE);



  //Felder festsetzen


  lcd.fillRect( 5,170, 260,174, RGB(255,  0,  0));   
  lcd.fillRect( 5,190, 260,194, RGB(0,  255,  0));
  lcd.fillRect( 5,210, 260,214, RGB(0,  0,  255));
  lcd.fillRect( lrr+5,165, lrr+10,174, RGB(255,  0,  0)); 
  lcd.fillRect( lrg+5,185, lrg+10,194, RGB(0,  255,  0));
  lcd.fillRect( lrb+5,205, lrb+10,214, RGB(0,  0,  255));
  lcd.drawText(290, 167, lrr, 1, RGB(0,0,0), RGB(255,255,255));
  lcd.drawText(290, 187, lrg, 1, RGB(0,0,0), RGB(255,255,255));
  lcd.drawText(290, 207, lrb, 1, RGB(0,0,0), RGB(255,255,255));
  lcd.fillRect( 30,30, 290,150, RGB(0,  0,  0)); 
}
//service routine

void loop()
{
  char tmp[128];
  static uint16_t last_x=0, last_y=0;
  static uint8_t led=60;
  unsigned long m;
  static unsigned long prevMillis=0;

  tp.service();

  //show tp data
  sprintf(tmp, "X:%03i|%04i Y:%03i|%04i P:%03i", tp.getX(), tp.getXraw(), tp.getY(), tp.getYraw(), tp.getPressure());
  lcd.drawText(45, 2, tmp, 1, COLOR_BLACK, COLOR_WHITE);

  if(tp.getPressure() > 3) //touch press?
  {
    //change backlight power
    if((tp.getX() < 45) && (tp.getY() < 15))
    {
      m = millis();
      if((m - prevMillis) > 800) //change only every 800ms
      {
        prevMillis = m;

        led += 10;
        if(led > 100)
        {
          led = 10;
        }
        lcd.led(led);
      }
    }
    //calibrate touch panel
    else if((tp.getX() > (lcd.getWidth()-30)) && (tp.getY() < 15))
    {
      tp_calibration(0);
    }



    //draw line
    else
    {
      if(last_x == 0)
      {
        //lcd.drawPixel(tp.getX(), tp.getY(), COLOR_RED);
      }
      else
      {
        // lcd.drawLine(last_x, last_y, tp.getX(), tp.getY(), COLOR_BLACK);
      }
      last_x = tp.getX();
      last_y = tp.getY();
    }

    //show backlight power and cal text
    lcd.drawText( 2,                2, "BL    ", 1, COLOR_RED, COLOR_WHITE);
    lcd.drawText(20,                2, led,      1, COLOR_BLUE, COLOR_WHITE);
    lcd.drawText(lcd.getWidth()-30, 2, "CAL",    1, COLOR_RED, COLOR_WHITE);
  }
  else
  {
    last_x = 0;
  }

  if(tp.getPressure() > 3) //touch press?
  {
    //if((tp.getX() < 257) && ((tp.getY() == 172 ))) //rotwert
    if((tp.getX() < 256) && ((tp.getY() > 170 )))


    {
      y=tp.getY();
      if(y < 175 && y > 165)
      {
       // Serial.print("Rot ");
       // Serial.println(y);
        lrra=lrr;
        lrr=tp.getX();
        if (lrr > 255)lrr=255;
        if (lrr < 5)return;
        lcd.drawText(290, 167, "     ", 1, RGB(0,0,0), RGB(255,255,255));
        lcd.drawText(290, 167, lrr, 1, RGB(0,0,0), RGB(255,255,255));
        RgB=RGB(lrr,lrg,lrb);
        lcd.drawText(270, 220, "      ", 1, RGB(0,0,0), RGB(255,255,255));
        lcd.drawText(270, 220, RgB, 1, RGB(0,0,0), RGB(255,255,255));
       
        lcd.fillRect( 5,165, 260,169, RGB(255, 255, 255));   
        lcd.fillRect( lrr,165, lrr+5,174, RGB(255,  0,  0));
      }
    }
    //grünwert
    y=tp.getY();
    if(y < 195 && y > 185)
    {
   //   Serial.print("Gruen ");
   //   Serial.println(y);


      lrga=lrg;
      lrg=tp.getX();
      if (lrg > 255)lrg=255;
      if (lrg < 5)return;
      lcd.drawText(290, 187, "     ", 1, RGB(0,0,0), RGB(255,255,255));
      lcd.drawText(290, 187, lrg, 1, RGB(0,0,0), RGB(255,255,255));
      RgB=RGB(lrr,lrg,lrb);
      lcd.drawText(270, 220, "      ", 1, RGB(0,0,0), RGB(255,255,255));
      lcd.drawText(270, 220, RgB, 1, RGB(0,0,0), RGB(255,255,255));
      lcd.fillRect( 5,185, 260,189, RGB(255, 255, 255));   
      lcd.fillRect( lrg,185, lrg+5,189, RGB(0,  255,  0));
    } 

    //blauwert
    y=tp.getY();
    if(y < 215 && y > 205)
    {
  //    Serial.print("Blau ");
   //   Serial.println(y);

      lrba=lrb;
      lrb=tp.getX();
      if(lrb > 255)lrb=255;
      if (lrb < 5)return;
      lcd.drawText(290, 207, "     ", 1, RGB(0,0,0), RGB(255,255,255));
      lcd.drawText(290, 207, lrb, 1, RGB(0,0,0), RGB(255,255,255));
      RgB=RGB(lrr,lrg,lrb);
      lcd.drawText(270, 220, "      ", 1, RGB(0,0,0), RGB(255,255,255));
      lcd.drawText(270, 220, RgB, 1, RGB(0,0,0), RGB(255,255,255));
      lcd.fillRect( 5,205, 260,209, RGB(255, 255, 255));   
      lcd.fillRect( lrb,205, lrb+5,209, RGB(0,  0, 255));
    } 

     lcd.fillRect( 30,30, 290,150, RGB(lrr,  lrg,  lrb));
     lcd.fillRect( 80,80, 200,100, RgB);
     
     
     
     
     Serial.print("Rot : ");
     Serial.print(lrr);
     Serial.print(" Gruen : ");
     Serial.print(lrg);
     Serial.print(" Blau : ");
     Serial.print(lrb);
     Serial.print(" INT : ");
     Serial.println(int RGB(lrr,lrg,lrb));
  }


}



98  International / Deutsch / Re: LED Schalten mittels Webserver on: May 05, 2011, 12:13:23 am
Hallo Stefan,

da gibt es einen Beitrag von Poldi " Arduino Webserver Poldi".
Hat bei mir mit UNO und ETH-Shield gut funktioniert.
Musste mal googeln, ansonsten steht es auf der Webseite von Poldi.

Gruss Kalli
99  International / Deutsch / Re: Bibliothek für das Touch Display MI0283QT-2 von Watterott on: April 23, 2011, 11:48:54 am
Hallo Gurkengraeber,
womit hab ich das verdient ?
Bin fast Rentner und schon seit 2 Jahren aus dem Arbeitsleben.
Für Dich muss ich hier garnichts posten.

Kein Gruss Kalli
100  International / Deutsch / Re: Bibliothek für das Touch Display MI0283QT-2 von Watterott on: April 23, 2011, 07:51:09 am
Hallo,
ich benutze das Display schon eine ganze Weile. Habe auch schon mehrere Anwendungen, wo ich über Touch Werte verändern kann. Letztes Programm ist eine Temperaturanzeige von bis zu 4 Sensoren. Ich kann jeder Zeile auch über ein Fester, was sich dann auftut, den richtigen Sensor zuordnen. Desweiteren auch ein Offset für den entsprechenden Fühler einstellen. Zum Schluss werden diese Daten dann im EEPROM abgespeichert, damit ich die Einstellungen nicht jedesmal neu einstellen muss.
Für den Touch benutze ich einen Stift vom alten Navi. Damit geht es auch sehr gut, wenn man Wurschtfinger hat. Vielleicht sollte man die Anwendungen zum Display unter einem Thema zusammenfassen.
Dann habe ich noch ein kleines Programm, da kann man mit dem Stift über Schieberegler (auf dem Display) die RGB Farbwerte verändern und die entsprechenden Farbwerte werden angezeigt.

Na dann...
Gruss Kalli
101  International / Deutsch / Re: Wasserdruck messen on: April 11, 2011, 02:36:14 am
Hallo Uwe,
ich will keine Ventile Steuern. Bei der Anlage gibt es eine Pumpe und einen Kessel und einen Druckschalter (3 polig). Dieser Schaltet die Pumpe bei 2 Bar an und bei 4 Bar wieder aus. Bei 2 Bar pieselt es nur und bei 4 Bar ist es richtig gut mit dem Druck. Ich wollte es so einrichten, dass die Pumpe schon ab 3 oder 3,5 Bar wieder einschaltet. Leider kann ich am Schalter nur eine Einstellung ändern (den Ausschaltdruck), die Hysterese bleibt immer bei 2 Bar.

Gruss Kalli
102  International / Deutsch / Re: Arduino Uno läuft heiß: Ethernetshield schuld? on: April 10, 2011, 04:01:25 pm
Hallo,
ich kann nur eine Verdopplung der Leistung feststellen, wenn ich den Strom verdoppel.
P=U*I. Also, bei 7 Volt und 0.1 A habe ich 0,7 Watt. Bei 0,2 A sind es 1,4 Watt. Oder habe ich was durcheinander gebracht ?

Gruss Kalli
103  International / Deutsch / Wasserdruck messen on: April 10, 2011, 11:39:46 am
Hallo,

mal eine kleine Anfrage, hat schonmal jemand den Wasserdruck mit einem Arduino ausgewertet ?
Ich möchte meine Hauswasseranlage im Garten mit einem Arduino steuern. Die Druckschalter, die es zu kaufen gibt, haben alle eine zu grosse Hysterese (so um 2 Bar).

Bin für jede Anregung dankbar

Gruss Kalli
104  International / Deutsch / Re: Arduino Uno läuft heiß: Ethernetshield schuld? on: April 10, 2011, 11:34:24 am
Hallo,

da Hool hat nocht nicht geschrieben, mit welcher Spannung er das Ding betreibt.
Einfach mal unter Last die Spannung vom Netzteil nachmessen. Vielleicht hilft es dann, einfach ein paar Si-Dioden davor zu schalten.

Gruß Kalli
105  International / Deutsch / Re: Arduino Uno läuft heiß: Ethernetshield schuld? on: April 09, 2011, 01:19:47 pm
Hallo da Hool,

bei Watterott gibt es mehrere Netzteile, die man für den Arduino verwenden kann.
Welche Spannung kommt denn raus ?
Ich vermute mal so um die 12-15 Volt.
7-9 Volt reichen auch, dann wird es nicht so warm.
Hatte bei 12 Volt auch eine etwas warme Platine mit ETH-Shield.

Gruss Kalli
Pages: 1 ... 5 6 [7] 8 9 ... 11