Show Posts
Pages: [1]
1  International / Deutsch / Re: SPI Libary für 128x64pixel Display on: July 30, 2011, 02:38:24 pm
hi

die hab ich natürlich am rechner, nur ist die leider nicht für spi sondern für parallel.

lg joe
2  International / Deutsch / SPI Libary für 128x64pixel Display on: July 28, 2011, 09:02:34 am
Hallo Leute!

ich habe folgendes display: http://www.dfrobot.com/index.php?route=product/product&path=53&product_id=372

leider kann die original libary nicht sehr viel und ist kaum dokumentiert

ich such jetzt schon seit knapp 2 wochen rum aber scheinbar bin ich zu doof

ich suche ne libary mit der ich einfach text und grafik darstellen kann. im prinzip gehts darum einige werte von sensoren auszulesen und anzuzeigen... wenn möglich ohne großartig variablen typen zu konvertieren

lg Joe

nachtrag hab ganz vergessen das display wäre zwar auch paralell anzusteuern das wäre aber doof da ich die IO's brauche...
3  International / Deutsch / Re: string zerlegen und in integer umwandeln on: February 01, 2011, 11:35:31 am
normalerweise sind die arduino spezifischen geschichten in der Referenz drinnen.... scheinbar wurden aber noch nicht die befehle der letzten version eingetragen... ich hab dann aufgrund des tips mal die examples durchgesehen und da fand ich dann recht gute beispiele wo man sichs rausarbeiten kann...
4  International / Deutsch / Re: string zerlegen und in integer umwandeln on: January 26, 2011, 12:26:48 pm
hi

lol danke....

wer kommt denn auf die idee nen befehl nicht in der referenz sondern in den examples nachzuschlagen.....

lg joe
5  International / Deutsch / string zerlegen und in integer umwandeln on: January 26, 2011, 11:42:26 am
hallo Leute!

bin mal wieder an die grenzen meines NOOB wissens angelangt

habe folgenden funktionsfähigen code:

Quote
void KANAL16()
{
  String Input1 = "";
  Wire.requestFrom(1, 18);    // request 6 bytes from slave device #1

  while(Wire.available())    // slave may send less than requested
  { 
    char buffer = Wire.receive(); // receive a byte as character
    Input1 = String(Input1 + buffer);
//    Serial.print(buffer);         // print the character
    
  }
  
  Kanal_1 = Input1.substring(0,4);
  Kanal_2 = Input1.substring(4,8);
  Kanal_3 = Input1.substring(8,12);
  Kanal_4 = Input1.substring(12,16);
  Kanal_5 = Input1.substring(16,17);
  Kanal_6 = Input1.substring(17);

}


mein problem ist das ich die strings Kanal_1 bis Kanal_6 jetzt in integer werte umwandeln müsste und genau das bekomm ich nicht hin. hab schon die (int) funktion ausprobiert genauso wie atoi();

bekomme immer
Code:
error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'

kann mir wer auf die sprünge helfen? bei bedarf kann ich natürlich den gesamten code posten

lg joe
6  Forum 2005-2010 (read only) / Deutsch / Re: Anfängerfrage: Arduino langsam ? on: January 15, 2011, 10:04:21 am
Hi!!!

Also ich hatte genau das selbe problem! am Standrechner mit Bluetooth USB Dongle sowie am Netbook (Acer Aspire One) braucht die IDE ne knappe Minute zum starten auf meinem großen Notebook (IBM W700) macht Bluetooth keine Probleme....

Ich würde sagen da gehört an der Entwicklungsumgebung was gemacht denn andere software die mit echten/virtuellen Comports arbeitet macht keine Probleme.

lg joe
7  Forum 2005-2010 (read only) / Deutsch / Re: Anfänger:string zusammensetzen und wieder zerlegen on: December 22, 2010, 07:18:21 am
hi

so bin jetzt ganz gut mit menem projekt unterwegs.

nun möchte ich aber etwas zur sicherheit ber der daten übermittlung am I2C machen da ich hinundwieder I2C fehler habe (manchmal kommt ein undefiniertes zeichen)

jetzt hab ich 2 dinge im kopf

1.) möchte ich die zu übermittelnde zeichenfolge verkürzen/komprimieren
2.) ne prüfsumme generieren um am master den empfangenen string auf richtigkeit zu überprüfen

was gibts denn da für möglichkeiten?

lg joe

8  Forum 2005-2010 (read only) / Deutsch / Re: Anfänger:string zusammensetzen und wieder zerlegen on: December 17, 2010, 07:33:31 am
ahhh ok.... sag mal hast du ne gute evtl deutsche beschreibung zu sprintf ? scheint mir sehr mächtig zu sein?

lg Joe
9  Forum 2005-2010 (read only) / Deutsch / Re: Anfänger:string zusammensetzen und wieder zerlegen on: December 17, 2010, 07:26:26 am
mach mich schlau... wo liegt da der programmier fehler? da fehlt was bei "%i" oder?

lg joe
10  Forum 2005-2010 (read only) / Deutsch / Re: Anfänger:string zusammensetzen und wieder zerlegen on: December 17, 2010, 03:07:43 am
hi

hey super ja jetzt tut es... genial... ich danke dir recht herzlich das du mich an der hand genommen hast... smiley

mich würd es jetzt zwar doch brennend interessieren warum das mit den 4 sprintf so komisch tat aber ok

lg Joe

11  Forum 2005-2010 (read only) / Deutsch / Re: Anfänger:string zusammensetzen und wieder zerlegen on: December 16, 2010, 05:31:28 pm
hi jkw

dank deines tips habe ich jetzt mal folgenden code gebastelt

Code:
// Sticks 1-4

#include <Wire.h>

// ADC PINS deklarieren
int ADC0=0;
int ADC1=1;
int ADC2=2;
int ADC3=3;

//Kanäle deklarieren
int Kanal_1;
int Kanal_2;
int Kanal_3;
int Kanal_4;

//div deklarationen

char Geber_1[4];
char Geber_2[4];
char Geber_3[4];
char Geber_4[4];

void setup ()
{
  Serial.begin(57600);
  Wire.begin(1);                                // Starte i2c bus als Slave mit addresse #1
  Wire.onRequest(i2c_request);                  // I2C interrupt Routine i2c request
}

void loop()
{
  //Kanäle einlesen
  Kanal_1=analogRead(ADC0);
  Kanal_2=analogRead(ADC1);
  Kanal_3=analogRead(ADC2);
  Kanal_4=analogRead(ADC3);
 
  //Kanäle Rechnen
  
  
  // ausgabe vorbereiten
  
  sprintf(Geber_1,"%04i",Kanal_1);
  sprintf(Geber_2,"%04i",Kanal_2);
  sprintf(Geber_3,"%04i",Kanal_3);
  sprintf(Geber_4,"%04i",Kanal_4);

  // Werte Seriell ausgeben
  Serial.print(Geber_1);
  Serial.print(" - ");
  Serial.print(Geber_2);
  Serial.print(" - ");
  Serial.print(Geber_3);
  Serial.print(" - ");
  Serial.println(Geber_4);
  

}

void i2c_request()                                      //daten per i2c senden
{
//  char buffer[32];
//  Geber_sum.toCharArray(buffer, 32);
  Wire.send(Geber_1);
}


nur is mir da noch was unklar: warum auch immer hab ich jetzt folgende ausgabe per seriell:

Code:
0565048504910529 - 048504910529 - 04910529 - 0529
0564048504920529 - 048504920529 - 04920529 - 0529
0565048504910530 - 048504910530 - 04910530 - 0530
0565048504910529 - 048504910529 - 04910529 - 0529
0565048504910529 - 048504910529 - 04910529 - 0529
0565048504910529 - 048504910529 - 04910529 - 0529
0565048504910530 - 048504910530 - 04910530 - 0530
0565048504920529 - 048504920529 - 04920529 - 0529
0565048504910530 - 048504910530 - 04910530 - 0530
0565048504910530 - 048504910530 - 04910530 - 0530
0565048404910529 - 048404910529 - 04910529 - 0529
0565048504920530 - 048504920530 - 04920530 - 0530
0565048504910529 - 048504910529 - 04910529 - 0529
0565048504910529 - 048504910529 - 04910529 - 0529
0565048504910529 - 048504910529 - 04910529 - 0529


die ersten 16 zeichen sind in "Geber_1" gespeichert und enthält aus mir unerfindlichen gründen alle kanäle von 1-4
die 2.te sequenz (Geber_2)mit 12 zeichen enthält die kanäle 2-4
die 3.te sequenz (Geber_3)mit 8 zeichen enthält die Kanäle 3,4
und einzig die 4.te sequenz(Geber_4) mit 4 Zeichen ist eigentlich korrekt und enthält nur den 4. Kanal

ich erkenne zwar das muster das dahintersteckt nur hab ich momentan keinen plan ... hab mir zar die englische referenz zu sprintf reingezogen nur blick ich die nicht ganz...

so wie ich das verstehe interagiert die erste sprintf anweisung mit allen nachfolgenden....

kommt mir vor wie bei ner seriellen ausgabe wo alles aneinander gereiht wird bis das Serial.println kommt

liege ich da richtig?

übrigens danke für deine hilfe.....

lg joe

edit: nachdem ich jetzt den code von den switch schleifen und unnötigen variablen befreit habe... ist der code sogar um einiges kleiner geworden  smiley-grin
12  Forum 2005-2010 (read only) / Deutsch / Re: Anfänger:string zusammensetzen und wieder zerlegen on: December 14, 2010, 04:43:53 pm
hi danke erstmal für deinen tip. nur komm ich nicht ganz klar damit:

als ausgangspunkt gibts den "int Kanal_1" der die werte per analogread zwischen 0-1023 bekommt.

anschliessend (im mir geposteten code nicht ersichtlich) werden noch bestimmte faktoren mit dem Kanal_1 zusammen gerechnet. wir sind noch immer bei nem int der jetzt nen wertebereich von -500 bis +1000 hat.

nach den berechnungen wird der int Kanal_1 in den string Geber_1 umgewandelt. in dem switch wird dann die führenden nullen ergänzt um immer 4 stellig zu sein

danach werden die strings Geber_1 bis Geber_4 aneinandergehängt und können vom i2c master dann abgefragt werden.

wenn ich jetzt deinem beispiel folgend Geber_1 als char definiere  bringe ich die integer werte nicht mehr rein , bekomme immer diesen fehler:

sticks_1_4:43: error: incompatible types in assignment of 'char' to 'char [4]'

hier nochmal der gesamte code mit deiner modifikation:

Code:
// Sticks 1-4

#include <Wire.h>

// ADC deklarieren
int ADC0=0;
int ADC1=1;
int ADC2=2;
int ADC3=3;

//Kanäle deklarieren
int Kanal_1;
int Kanal_2;
int Kanal_3;
int Kanal_4;

//div deklarationen
int laenge1=0;
int laenge2=0;
int laenge3=0;
int laenge4=0;
char Geber_1[4];
String Geber_2 = "";
String Geber_3 = "";
String Geber_4 = "";
String Geber_sum = "";


void setup ()
{
  Serial.begin(57600);
  Wire.begin(1);                                // Starte i2c bus als Slave mit addresse #1
  Wire.onRequest(i2c_request);                  // I2C interrupt Routine i2c request
}

void loop()
{
  //Kanäle einlesen
  Kanal_1=analogRead(ADC0);
  Kanal_2=analogRead(ADC1);
  Kanal_3=analogRead(ADC2);
  Kanal_4=analogRead(ADC3);
 // Geber_1 = String(Kanal_1, DEC);
  Geber_1 = char(analogRead(ADC0));
  Geber_2 = String(Kanal_2, DEC);
  Geber_3 = String(Kanal_3, DEC);
  Geber_4 = String(Kanal_4, DEC);
  //laenge1 = Geber_1.length();
  laenge2 = Geber_2.length();
  laenge3 = Geber_3.length();
  laenge4 = Geber_4.length();
  //switch (laenge1)
  //{
  //case 1:
  //  Geber_1 = String("000" + Geber_1);
  //  break;
  //case 2:
  //  Geber_1 = String("00" + Geber_1);
  //  break;
  //case 3:
  //  Geber_1 = String("0" + Geber_1);
  //  break;
  //case 4:
  //  break;
  //}
  sprintf(Geber_1,"%04i",int(Geber_1));

    switch (laenge2)
  {
  case 1:
    Geber_2 = String("000" + Geber_2);
    break;
  case 2:
    Geber_2 = String("00" + Geber_2);
    break;
  case 3:
    Geber_2 = String("0" + Geber_2);
    break;
  case 4:
    break;
  }
    switch (laenge3)
  {
  case 1:
    Geber_3 = String("000" + Geber_3);
    break;
  case 2:
    Geber_3 = String("00" + Geber_3);
    break;
  case 3:
    Geber_3 = String("0" + Geber_3);
    break;
  case 4:
    break;
  }
    switch (laenge4)
  {
  case 1:
    Geber_4 = String("000" + Geber_4);
    break;
  case 2:
    Geber_4 = String("00" + Geber_4);
    break;
  case 3:
    Geber_4 = String("0" + Geber_4);
    break;
  case 4:
    break;
  }


  Geber_sum = String(Geber_1 + Geber_2 + Geber_3 + Geber_4);
  
  // Werte Seriell ausgeben
  Serial.println(Geber_sum);
  

}

void i2c_request()                                      //daten per i2c senden
{
  char buffer[32];
  Geber_sum.toCharArray(buffer, 32);
  Wire.send(buffer);
}


wo mach ich den hier den fehler?

lg joe

edit: ausserdem ist mir gerade aufgefallen das durch sprintf das compilierte programm um ca 800byte länger ist....
13  Forum 2005-2010 (read only) / Deutsch / Re: Anfänger:string zusammensetzen und wieder zerlegen on: December 12, 2010, 05:56:44 am
Hallo Leute!

Ich habs jetzt mal hinbekommen das es das tut was es soll. Was haltet Ihr von der Lösung?

Code:
#include <Wire.h>

// ADC Pin's deklarieren
int ADC0=0;
int ADC1=1;
int ADC2=2;
int ADC3=3;

//Kanäle deklarieren
int Kanal_1;
int Kanal_2;
int Kanal_3;
int Kanal_4;

//div deklarationen
int laenge1=0;
int laenge2=0;
int laenge3=0;
int laenge4=0;
String Geber_1 = "";
String Geber_2 = "";
String Geber_3 = "";
String Geber_4 = "";
String Geber_sum = "";


void setup ()
{
  Serial.begin(57600);
  Wire.begin(1);                                // Starte i2c bus als Slave mit addresse #1
  Wire.onRequest(i2c_request);                  // I2C interrupt Routine i2c request
}

void loop()
{
  //Kanäle einlesen
  Kanal_1=analogRead(ADC0);
  Kanal_2=analogRead(ADC1);
  Kanal_3=analogRead(ADC2);
  Kanal_4=analogRead(ADC3);
 

  //hier kommen noch einige berechnungen zu den analogwerten rein

  Geber_1 = String(Kanal_1, DEC);
  Geber_2 = String(Kanal_2, DEC);
  Geber_3 = String(Kanal_3, DEC);
  Geber_4 = String(Kanal_4, DEC);
  laenge1 = Geber_1.length();
  laenge2 = Geber_2.length();
  laenge3 = Geber_3.length();
  laenge4 = Geber_4.length();
    switch (laenge1)
  {
  case 1:
    Geber_1 = String("000" + Geber_1);
    break;
  case 2:
    Geber_1 = String("00" + Geber_1);
    break;
  case 3:
    Geber_1 = String("0" + Geber_1);
    break;
  case 4:
    break;
  }

    switch (laenge2)
  {
  case 1:
    Geber_2 = String("000" + Geber_2);
    break;
  case 2:
    Geber_2 = String("00" + Geber_2);
    break;
  case 3:
    Geber_2 = String("0" + Geber_2);
    break;
  case 4:
    break;
  }
    switch (laenge3)
  {
  case 1:
    Geber_3 = String("000" + Geber_3);
    break;
  case 2:
    Geber_3 = String("00" + Geber_3);
    break;
  case 3:
    Geber_3 = String("0" + Geber_3);
    break;
  case 4:
    break;
  }
    switch (laenge4)
  {
  case 1:
    Geber_4 = String("000" + Geber_4);
    break;
  case 2:
    Geber_4 = String("00" + Geber_4);
    break;
  case 3:
    Geber_4 = String("0" + Geber_4);
    break;
  case 4:
    break;
  }


  Geber_sum = String(Geber_1 + Geber_2 + Geber_3 + Geber_4);
  
  // Werte Seriell ausgeben
  Serial.println(Geber_sum);
  

}

void i2c_request()                                      //daten per i2c senden
{
  char buffer[32];
  Geber_sum.toCharArray(buffer, 32);
  Wire.send(buffer);
}


irgendwelche tips um den Code zu verbessern?

LG Joe
14  Forum 2005-2010 (read only) / Deutsch / Anfänger:string zusammensetzen und wieder zerlegen on: December 10, 2010, 02:48:50 pm
Hallo Leute!

Erstmal ich bin absoluter Anfänger, hab jetzt seit 3 Wochen zwei Arduinos. Hardware ist für mich kein Problem nur beim programmieren happert es total... nun steh vor nem sicher für Euch banalen Problem:

Am ersten Arduino sind 4 analge Sensoren und 8 digitale. Er ist als I2C Slave konfiguriert. Er erfasst Messdaten rechnet ein bisschen drann rum.

Der 2. Arduino ist I2C Master und hohlt die Daten ab und macht weiter

Die Messdaten Erfassung und die generelle I2C Kommunikation hab ich hinbekommen nun zu meinem Problem:

Ich möchte am 1 Arduino die 12 Variablen zu einem String zusammenfügen das ist mit den digitalen Daten kein problem da es nur 1stellige Werte sind nur die analogen machen mir Probleme da sie von 0-1023 gehen somit bekomme ich einen String unterschiedlicher länge was mir dann am 2.arduino beim abfragen per i2c Probleme bereitet. jetzt stell ich mir halt vor das bei den Analogwerten einfach Nullen vorne eingefügt werden solange bis die Aariable 4 Stellen hat somit komme ich auf einen String der dann immer 24Byte lang ist (4x4bytes für die analogen Werte plus 8 byte für die digitalen)

Auch das Zerlegen des empfangenen Strings macht mir Probleme da ich keinen Ansatzpunkt habe... wie gesagt ich bin programmier DAU.

Ist überhaupt mein Gedankengang richtig oder gibts ne bessere Variante die Daten vom Master aus abzufragen?

danke schon mal im voraus

lg Joe
Pages: [1]