====== Arduino Tools ====== Dieses Kapitel enthält Tools zum Entwickeln, Testen und Einrichten der Kommunikation für Arduino-Software. ===== I²C Tools ===== ==== I²C scanner ==== {{:de:project_s7:uk.png?16|english}} This sketch tests the standard I²C 7-bit addresses. Devices with higher bit address might not be seen properly. {{:de:project_s7:de.png?16|deutsch}} Diese Sketch testet die Standard-I²C-7-Bit-Adressen. Geräte mit höherer Bitadresse werden möglicherweise nicht richtig angezeigt. Eine Zusammenfassung des Arduino I²C finden Sie hier: [[de:arduino:start#arduino_i2c|Arduino I²C]]. \\ Arduino I²C Kommunikationsmodule finden Sie hier: [[de:arduino:comm_example#i2c|Arduino I²C Kommunikation]]. \\ // -------------------------------------- // i2c_scanner // // Version 1 // This program (or code that looks like it) // can be found in many places. // For example on the Arduino.cc forum. // The original author is not known. // Version 2, Juni 2012, Using Arduino 1.0.1 // Adapted to be as simple as possible by Arduino.cc user Krodal // Version 3, Feb 26 2013 // V3 by louarnold // Version 4, March 3, 2013, Using Arduino 1.0.3 // by Arduino.cc user Krodal. // Changes by louarnold removed. // Scanning addresses changed from 0...127 to 1...119, // according to the i2c scanner by Nick Gammon // http://www.gammon.com.au/forum/?id=10896 // Version 5, March 28, 2013 // As version 4, but address scans now to 127. // A sensor seems to use address 120. // // // This sketch tests the standard 7-bit addresses // Devices with higher bit address might not be seen properly. // #include void setup() { Wire.begin(); Serial.begin(9600); Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan } ===== SIM900 Tools ===== ==== SIM900 serielle Kommunikation ==== {{:de:project_s7:de.png?16|deutsch}} Kommunikationsprogramm zum Testen des SIM900-Moduls. Befehle müssen in der Befehlszeile des seriellen Monitors (mit ENTER) ausgegeben werden. Der Monitor muss auf //"auch NL als auch CR"// eingestellt sein. Weitere Informationen zum SIM900 finden Sie hier: [[de:arduino:gprs#at_coms|SIM900 quad band GSM-GPRS shield]] \\ SIM900-Befehle: [[de:arduino:gprs#at_coms|SIM900 AT Befehle]] \\ {{:de:project_s7:uk.png?16|english}} Communication program for testing the SIM900 module. Commands must be issued on the serial monitor command line (with ENTER). The monitor must be set to //"booth NL & CR"//. You can read more about the SIM900 here: [[de:arduino:gprs#at_coms|SIM900 quad band GSM-GPRS shield]] \\ SIM900 commands: [[de:arduino:gprs#at_coms|SIM900 AT commands]] \\ //Serial Relay - Arduino will patch a //serial link between the computer and the GPRS Shield //at 19200 bps 8-N-1 //Computer is connected to Hardware UART //GPRS Shield is connected to the Software UART #include SoftwareSerial GPRS(50, 51); //Mega 2560 unsigned char buffer[64]; // buffer array for data recieve over serial port int count=0; // counter for buffer array void setup() { GPRS.begin(19200); // the GPRS baud rate Serial.begin(19200); // the Serial port of Arduino baud rate. } void loop() { if (GPRS.available()) // if date is comming from softwareserial port ==> data is comming from gprs shield { while(GPRS.available()) // reading data into char array { buffer[count++]=GPRS.read(); // writing data into array if(count == 64)break; } Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array count = 0; // set counter of while loop to zero } if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook GPRS.write(Serial.read()); // write it to the GPRS shield } void clearBufferArray() // function to clear buffer array { for (int i=0; i