Switzerland
Offline
Sr. Member
Karma: 0
Posts: 261
|
 |
« on: March 21, 2012, 10:14:10 am » |
Hallo zusammen
Wollte die ID aus einem Sensor auslesen habe dafür ein Datasheet gekriegt wo drin steht wie es gehen soll doch irgendwie begreiffe ich das nicht... Kann mir jemand helfen wie ich die Command richtig an den Sensor sende damit der auch mir antwortet.
Danke das wäre super, Andi
|
|
|
|
|
Logged
|
|
|
|
|
WW
Offline
Jr. Member
Karma: 0
Posts: 59
|
 |
« Reply #1 on: March 21, 2012, 11:33:46 am » |
Hallo GekoCH,
zu wenig Input, wie bitte soll Dir jemand helfen können? Wie wäre es wenigstens einmal mit der Bezeichnung des Sensors und/oder dem Datenblatt?
|
|
|
|
|
Logged
|
|
|
|
|
Heidelberg
Offline
Full Member
Karma: 1
Posts: 209
Arduino rocks
|
 |
« Reply #2 on: March 21, 2012, 11:55:29 am » |
Nimm dir einfach das Beispiel eines ähnlichen Sensors mit Acknoledgements und ändere das Programm nach den Reihen des Datenblattes ab. Das mit den ein- und auslesen der Daten ist nicht ganz trivial.
|
|
|
|
|
Logged
|
|
|
|
|
Switzerland
Offline
Sr. Member
Karma: 0
Posts: 261
|
 |
« Reply #3 on: March 21, 2012, 12:56:58 pm » |
Hallo GekoCH,
zu wenig Input, wie bitte soll Dir jemand helfen können? Wie wäre es wenigstens einmal mit der Bezeichnung des Sensors und/oder dem Datenblatt?
Habe das Dokument doch angefügt, es sit wohl nur sichtbar wenn ihr eingeloggt seit. Gruss
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 172
Posts: 16131
+39 349 2158303
|
 |
« Reply #4 on: March 21, 2012, 02:39:22 pm » |
Bei bestimmten Gelegenheiten gefällt mir minimalismus aber beim Antworten-wollen auf minimalistische Fragen definitiv nicht.
Du kannst den Sensor mittels Arduino resettieren? Ansonsten hast Du keine Möglichkeit ihn in den Command Mode zu versetzen.
Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Switzerland
Offline
Sr. Member
Karma: 0
Posts: 261
|
 |
« Reply #5 on: March 21, 2012, 03:23:07 pm » |
Hmm naja ich weiss im Moment nicht wie ich den Snesor reseten kann um dann direkt in den Command mode zu gelangen.... Kann ein Reset auch per Command genügen denn anders kann ich es mir nich vorstellen....
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 172
Posts: 16131
+39 349 2158303
|
 |
« Reply #6 on: March 21, 2012, 03:44:42 pm » |
Ich weiß es nicht und die anderen wissen es auch sicher nicht, da niemend von uns weiß welchen Sensor Du benutzt. Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Switzerland
Offline
Sr. Member
Karma: 0
Posts: 261
|
 |
« Reply #7 on: March 21, 2012, 03:52:41 pm » |
oops habe das Falsche Dokument hochgeladen dort steht es nicht drinn... sorry
Es ist ein HYT 271 (DIGITALER FEUCHTESENSOR)
|
|
|
|
|
Logged
|
|
|
|
|
WW
Offline
Jr. Member
Karma: 0
Posts: 59
|
 |
« Reply #8 on: March 21, 2012, 05:09:15 pm » |
Sorry GekoCH, ich habe wirklich kein Datenblatt gesehen. Den Sensor habe ich auch, der ist wirklich gut. Resetten kannst Du den nicht wirklich, aber im Datenblatt heisst es ja auch "Power-On Reset" - leg seinen Vdd-Pin auf einen Digitalen I/O, dann kannst Du ihn über diesen Pin an- und ausschalten. Dann muss innerhalb von 10ms nach power-up "Start Command-Mode" (0xA0 0x00 0x00) gesendet werden um in den Kommando-Modus zu kommen, danach kannst Du die ID lesen oder z.B. eine neue I2C-Adresse schreiben.
|
|
|
|
|
Logged
|
|
|
|
|
Switzerland
Offline
Sr. Member
Karma: 0
Posts: 261
|
 |
« Reply #9 on: March 22, 2012, 02:43:34 am » |
Das ist eine gute Idee, hat irgendwie auch funktioniert denn im Command Mode kann man ja keine Feuchte und Temp auslesen was mir zeigt dass ich im Command Mode drinn bin aber das Auslesen klappt nicht sprich ich verstehe nicht wie ich nun an die Adresse komme. Hier wäre der Code den ich verwende... //Sensor starten digitalWrite(13, HIGH); delay(2);
//in Command Mode Wire.beginTransmission(adress); Wire.send(0xA0); Wire.send(0x00); Wire.send(0x00); Wire.endTransmission(); delay(100);
//Adress anfragen Wire.beginTransmission(adress); Wire.send(0x1C); Wire.send(0x00); Wire.send(0x00); Wire.endTransmission(); delay(100);
//Adresse auslesen Wire.requestFrom(adress, 3); if(Wire.available() > 2){ int b1 = Wire.receive(); int b2 = Wire.receive(); int b3 = Wire.receive(); Serial.println((b1)); Serial.println((b2)); Serial.println((b3));
int i2cAdress = b2 << 8 | b3; Serial.println((i2cAdress)); }
|
|
|
|
|
Logged
|
|
|
|
|
Switzerland
Offline
Sr. Member
Karma: 0
Posts: 261
|
 |
« Reply #10 on: March 22, 2012, 02:55:24 am » |
uuppps Ich *!*?# ok so ich habs  byte decToBcd(byte val){ return ( (val/10*16) + (val%10) ); }
byte bcdToDec(byte val){ return ( (val/16*10) + (val%16) ); }
void adresseAendern(){ //Sensor starten digitalWrite(13, HIGH); delay(2);
//in Command Mode Wire.beginTransmission(adress); Wire.send(0xA0); Wire.send(0x00); Wire.send(0x00); Wire.endTransmission(); delay(100);
//Adress anfragen Wire.beginTransmission(adress); Wire.send(0x1C); Wire.send(0x00); Wire.send(0x00); Wire.endTransmission(); delay(100);
//Adresse auslesen Wire.requestFrom(adress, 3); if(Wire.available() > 2){ byte b1 = bcdToDec(Wire.receive()); byte b2 = bcdToDec(Wire.receive()); byte b3 = bcdToDec(Wire.receive()); /* Serial.println((b1), DEC); Serial.println((b2), DEC); Serial.println((b3), DEC); */ int i2cAdress = b2 << 8 | b3; Serial.println((i2cAdress)); }
//Adress neu setzten Wire.beginTransmission(adress); Wire.send(0x5C); Wire.send(0x00); Wire.send(adressNew); Wire.endTransmission(); delay(100);
//normal Mode digitalWrite(13, LOW); delay(100);
}
|
|
|
|
« Last Edit: March 22, 2012, 03:06:27 am by GekoCH »
|
Logged
|
|
|
|
|
|