Habe heute mit dem Buch "Powerprojekte mit Arduino und C" einen weiteren Arduino Uno erhalten. Im Gegensatz zu meine beiden anderen, ein Orgrinaler, jedoch mit SMD Controller.
Habe die Prototyp Platine vom anderen Arduino auf diese gepackt. Verdrahtung nicht geändert.
Das Programm liest 3 Potis(25k) aus, gibt diese Werte an eine RGB LED und das I2C Display weiter.
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C
lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,
D4_pin,D5_pin,D6_pin,D7_pin);
const int potPin[] = {
2, 1, 0};
const int ledPin[] = {
3, 5, 6};
int rgb[] = {
0, 0, 0};
void setup() {
for(int i = 0; i < 3; i++) {
pinMode(ledPin[i], OUTPUT);
}
lcd.begin(16,2);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();
}
void loop() {
rgb[0] = analogRead(potPin[0]) / 4;
rgb[1] = analogRead(potPin[1]) / 4;
rgb[2] = analogRead(potPin[2]) / 4;
analogWrite(ledPin[0], rgb[0]);
analogWrite(ledPin[1], rgb[1]);
analogWrite(ledPin[2], rgb[2]);
lcd.setCursor(0,0);
lcd.print("rgb[r, g, b] = {");
lcd.setCursor(0,1);
lcd.print(" ");
print3digits(rgb[0]);
lcd.print(", ");
print3digits(rgb[1]);
lcd.print(", ");
print3digits(rgb[2]);
lcd.print("};");
}
void print3digits(int i) {
if(i >= 0 && i < 10) {
lcd.print(" ");
lcd.print(i);
}
else if(i >= 10 && i < 100) {
lcd.print(" ");
lcd.print(i);
}
else lcd.print(i);
}
Die PWM IOs 5 und 6 geben keine Mucks von sich. Habe auch das Beispiel "blink without delay" ausgeührt mit beiden LEDs ausprobiert, nichts geht. Die anderen Ausgänge funktionieren wie gewünscht. Gibt es irgendwo eine Möglichkeit, den UNO auf Werkseinstellungen zu setzen mit dem Gedanken, irgendwo hat es etwas im Bootloader zerschossen.
Andernfalls, sind die SMD Varianten empfindlicher als die mit der DIP Variante?