Arduino Plugin in Eclipse aktivieren

Folgende Programme werden benötigt:

Ich habe beide Pakete (Arduino IDE + Eclipse) in meinem Homesverzeichnis in den Unterordner Tools entpackt.

Damit der User auch Zugriff auf den Arduino hat sollte er den Gruppen tty und uucp hinzugefügt werden:

sudo usermod -a -G tty,uucp shellmann

Danach start man eclipse. Dort muss nun das Plugin installiert werden:

Help => Install New Software

install_pluginHier muss man auf Add klicken.

install_plugin2Die Daten für das Repository wie oben abgebildet eingeben
(URL: http://www.baeyens.it/eclipse/V2)

 install_plugin3Nun kann das Repository über die Drop Down Liste ausgewählt werden.
ACHTUNG: Unten müssen auch die Haken passend gesetzt werden.

Das Plugin kann nun installiert werden. Eclipse muss anschliessend neu gestartet werden. Bei mir kam aber z.B. beim Zugriff auf den “Serial Monitor”  noch eine Fehlermeldung:

java.lang.UnsatisfiedLinkError: Can't load library: /home/user/tools/arduino/lib/librxtxSerial64.so
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854) at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062) at it.baeyens.arduino.common.Common.LoadRXTX(Common.java:528)
at it.baeyens.arduino.ui.ArduinoPreferencePage$1.widgetSelected(ArduinoPreferencePage.java:248)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
...

Dafür musste ich das Paket dev-java/rxtx nachinstallieren und in den entsprechenden Ordner verlinken.

sudo ln -s /usr/lib64/rxtx-2/librxtxSerial-2.2pre1.so ~/tools/arduino/lib/librxtxSerial64.so

UPDATE:
Alternativ kann man die librxtxSerial auch noch /lib linken:

sudo ln -s /usr/lib64/rxtx-2/librxtxSerial-2.2pre1.so /lib/librxtxSerial64.so

Erste Gehversuche mit dem Arduino und einem HD44780 mit i2c Adapter

Meine ersten Gehversuche mit Arduino waren eher kläglich. Anscheinend habe ich mir eine nicht so ganz einfach Sache vorgenommen:

Der Uno sollte ein 4*20 HD44780 LCD über einen i2c Adapter ansprechen. Wie sich im Nachinein herausgestellt hat, gibt es wohl unterschiedliche Adapter, die dann auch unterschiedlich angesprochen werden.

Zuerst aber mal die Verdrahtung:

i2c Adapter Arduino
GND GND
VCC 5V
SDA A4
SCL A5

Als Software wird folgendes benötigt:

WICHTIG: Die Liquid Crystal Library ersetzt die von Arduino vor installiert. d.h. im Ordner libraries der Arduinoinstallation muss zuerst der Ordner LiquidCrystal gelöscht werden. Anschließend wird der gleichnamige Ordner aus dem Liquid Crystal Library Paket dorthin kopiert.

Danach müssen wir zuerst einmal die Adresse des Displays herausfinden. Dazu können wir folgenden Code nutzen. Erklärungen dazu gibt es hier.

Mein kleiner Freund mit der “vielsagenden” Bezeichnung UC-146 hat anscheinend die “default” Adresse 0x27.

IMG_20150529_195841

Anschließend kann man mit folgendem Code Text zum Display schicken:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// define variables
#define I2C_ADDR 0x27

// Set the pins on the I2C chip used for LCD connections:
//                    addr,    en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

// setup
void setup()
{
  lcd.begin(20,4);    // initialize the lcd for 20 chars 4 lines and turn on backlight
  lcd.backlight();   // finish with backlight on
}

void loop()
{
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(0,1);
  lcd.print("--------------------");
  lcd.setCursor(1,3);
  lcd.print("http://pcspinnt.de");
}

IMG_20150529_210814

Der Code ist bewusst sehr simpel gehalten. Das eigentlich spannende ist diese Zeile:

LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

Hier erklärt die Doku der Liquid Crystal Library sehr gut, wofür diese Werte stehen:

Class constructor. Initializes class variables and defines the I2C address of the LCD. The constructor does not initialize the LCD.

Parameters:
lcd_Addr[in]    I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers.
En[in]    LCD En (Enable) pin connected to the IO extender module
Rw[in]    LCD Rw (Read/write) pin connected to the IO extender module
Rs[in]    LCD Rs (Reset) pin connected to the IO extender module
d4[in]    LCD data 0 pin map on IO extender module
d5[in]    LCD data 1 pin map on IO extender module
d6[in]    LCD data 2 pin map on IO extender module
d7[in]    LCD data 3 pin map on IO extender module

Die Pin Belegung des Displays dazu im Vergleich:

01 	GND
02 	+5V
03 	Contrast
04 	RS
05 	RW
06 	E
07 	Data 0
08 	Data 1
09 	Data 2
10 	Data 3
11 	Data 4
12 	Data 5
13 	Data 6
14 	Data 7
15 	+5V
16 	GND

Eine große Hilfe war diese Seite. Hier sind auch die verschiedenen i2c Adapter incl. entsprechendem Code erklärt.