Arduino szoftvermegoldások / példaprogramok

Ha az újratelepítésnél az alábbi probléma lép fel:
Eine Bibliothek namens Arduino-LiquidCrystal-I2C-library-master ist bereits vorhanden
Ezen a néven Arduino-LiquidCrystal-I2C-library-master már létezik egy könyvtár

Akkor a Arduino "lib" könyvtárból először törölni kell a régit:

C:\Users\Felhasználónév\Documents\Arduino\libraries

int sensorPin = A0;
int sensorValue = 0;
int ledPin = 13;      // select the pin for the LED

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  while (!Serial) ; // wait for serial
  delay(200);
  Serial.println("Read Analog Test by OB121.com");
  Serial.println("-------------------");
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(1000);
}

Ez a szkennerprogram az Arduino-ra kapcsolt és azzal kommunikálni képes I²C egységek címeinek a feltárására alkalmas.

A szkennelést nyilván úgy érdemes végrehajtani, hogy szépen sorban, egyik I²C résztvevőt a másik után a buszra kapcsolunk. Így a címkonfliktusok is viszonylag egyszerűen kiszűrhetők. A szerial képernyőt se feledjük el 115.200-ra állítani az IDE-n.

// I2C Scanner
// Written by Nick Gammon
// Date: 20th April 2011

#include <Wire.h>

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

  // Leonardo: wait for serial port to connect
  while (!Serial) 
    {
    }

  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
  
  Wire.begin();
  for (byte i = 8; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

Az eredmény valami ilyesmi lesz, ha minden jól megy, és valóban csatlakozik a résztvevő a buszra:

I2C scanner. Scanning ...
Found address: 39 (0x27)
Done.
Found 1 device(s).

A németben a technikát Flankenauswertung névvel illetik, gyakran magyarul is megjelenik a "flankézés" kifejezés az élfigyelés helyett. Gyakorlatilag arról van szó, hogy a nyomógomb lenyomása vagy elengedése nincs szinkronban a program ciklusidejével, ezért ennek az állapotváltozását külön változóval rögzíteni kell.

Fel- vagy lefutóél figyelés

Ha csak a bemenet értékét olvassuk, és ez alapján próbálunk egy számlálót léptetni, az fog történni, hogy a nyomógomb lenyomása alatt elszalad a számláló, mivel minden ciklikus programlefutás esetén látni fogja a jelet a bemeneten, azaz számlálni fog. Ha minden lenyomás után akarjuk csak a számlálást, az alábbi programmal érdemes próbálkozni: