Jürgens Arduino Test Programme IN OUT

 

Einleitung
Unzählige Erweiterungen!
Für den Arduino existieren Zusatzmodule, Shields und Sensoren in sehr großer Anzahl. Dazu ist es auch möglich eigene Schaltungen zu entwickeln um sie mit dem Arduino anzuprogrammieren.
Doch durch diese Unzahl von Erweiterungen ist es schwer den Überblick bezüglich der richtigen Bibliotheken bzw. der Programmierung dieser Teile zu behalten.
Wie die Zusatzmodule anprogrammieren?

Hier sind viele Programmbeispiele inkl. einer genauer Bezeichnung der dazugehörigen Hardware zu finden. Damit sollte es einfacher sein schon beim Kauf auf Kompatibilität zu achten.
Die Beispiele sind für ARDUINO UNO R3 abgestimmt.

Zum Seitenanfang

Libraries (Bibliotheken)

Benötigte Bibliotheken zum Downloaden: Libraries.ZIP

Zum Seitenanfang

Source Codes

Alle Sourcecodes zum Downloaden: Sources.ZIP

Zum Seitenanfang

Test Programme
Piezo Summer

Ansicht

Pinbelegung / Schaltplan
Piezo -> Arduino
--------------
+ -> Pin D10
- -> GND

Beispielcode

/*
Piezo Speaker Test

Piezo -> Arduino
--------------
+ -> Pin D10
- -> GND

*/

const int PinPiezo=10;

void setup() {

pinMode(PinPiezo, OUTPUT);
beep(50, 130);
beep(50, 130);
beep(50, 130);
delay(1000);
}

void loop() {

beep(200, 255);
}

void beep(unsigned char delayms, unsigned char freq){

analogWrite(PinPiezo, freq);
delay(delayms);
analogWrite(PinPiezo, 0);
delay(delayms);
}

 

Schaltung

 

Zum Seitenanfang

 

Keypad 3x4 Tasten



Vorne


Pinbelegung

-----------
Keypad -> Arduino
1 -> A2
2 -> A3
3 -> A4
4 -> A5
5 -> A6
6 -> A7
7 -> A8

Beispielcode

/*
4x3 Keypad Test

Pinbelegung
-----------
Keypad -> Arduino
1 -> A2
2 -> A3
3 -> A4
4 -> A5
5 -> A6
6 -> A7
7 -> A8

*/

#include "Keypad.h"

const byte ROWS = 4;
const byte COLS = 3;

char keys[ROWS][COLS] =
{{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}};

byte rowPins[ROWS] = {
8, 7, 6, 5};

byte colPins[COLS] = {
4, 3, 2};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
    Serial.begin(9600);
    }

void loop() {
    char key = keypad.getKey();
    if (key != NO_KEY) {
        Serial.print(key);
        } 
    }

 

 

Zum Seitenanfang

 

KY-040 Rotary Encoder (Endlos Potentiometer)

 

Vorne

Hinten

Pinbelegung
-----------
Encoder -> Arduino

SW -> Pin A4
DT -> Pin A3
CLK -> Pin A2
+VCC -> +5V
GND -> GND

SW -> 10k Widerstand -> +5V
DT -> 0,1uF Kondensator -> GND
CLK -> 0,1uF Kondensator -> GND

Beispielcode


/*
KY-040 Rotary Encoder (Drehencoder) Test

Pinbelegung
-----------
Encoder -> Arduino

SW -> Pin A4
DT -> Pin A3
CLK -> Pin A2
+VCC -> +5V
GND -> GND

SW -> 10k Widerstand -> +5V
DT -> 0,1uF Kondensator -> GND
CLK -> 0,1uF Kondensator -> GND
*/

volatile boolean TurnDetected;
volatile boolean up;

const int PinCLK=2;
const int PinDT=3;
const int PinSW=4;
const int PinLD=13;

void isr0 () {

up = (digitalRead(PinCLK) == digitalRead(PinDT));
TurnDetected = true;
}

void setup () {

pinMode(PinCLK,INPUT);
pinMode(PinDT,INPUT);
pinMode(PinSW,INPUT);
pinMode(PinLD,OUTPUT);
attachInterrupt (0,isr0,CHANGE);

Serial.begin (9600);
Serial.println("Start");
}

void loop () {

static long virtualPosition=0;

if (!(digitalRead(PinSW)) && (virtualPosition != 0)) {

virtualPosition=0;
Serial.print ("Reset = ");
Serial.println (virtualPosition);
}


if(!digitalRead(PinSW)){

digitalWrite(PinLD, HIGH); //axisbutton pressed

}else{

digitalWrite(PinLD, LOW); //axisbutton released
}


if (TurnDetected) {

if (up)
   virtualPosition++;
else
   virtualPosition--;
   TurnDetected = false;
   Serial.print ("Count = ");
   Serial.println (virtualPosition);
}

}

Schaltung

 

Zum Seitenanfang

Taster Tippschalter



Ansicht


Pinbelegung
Schalter -> Arduino
-------------------
Eingang -> +5V
Ausgang -> Pin D12
Ausgang -> Widerstand 10k -> GND

Beispielcode

/*
Taster Schalter Test

Pinbelegung
-----------
Schalter -> Arduino
-------------------
Eingang -> +5V
Ausgang -> Pin D12
Ausgang -> Widerstand 10k -> GND

*/

int SchalterZustand;
int InputPin = 12;
int LEDPin = 13;

void setup () {

pinMode(InputPin,INPUT);
pinMode(LEDPin,OUTPUT);
}

void loop() {

SchalterZustand = digitalRead(InputPin);

if(SchalterZustand == 1){

digitalWrite(LEDPin,HIGH);
}

if(SchalterZustand == 0){

digitalWrite(LEDPin,LOW);
}

}

Schaltung

 

Zum Seitenanfang

Um- Schalter



Ansicht - mit angelöteten Kabel

 

Pinbelegung
Schalter -> Arduino
-------------------
Eingang(Mitte) -> +5V
Ausgang1 -> Pin D11
Ausgang2 -> Pin D12
Ausgang1 -> Widerstand 10k -> GND
Ausgang2 -> Widerstand 10k -> GND

Beispielcode

/*
Umschalter Test

Pinbelegung
-----------
Schalter -> Arduino
-------------------
Eingang(Mitte) -> +5V
Ausgang1 -> Pin D11
Ausgang2 -> Pin D12
Ausgang1 -> Widerstand 10k -> GND
Ausgang2 -> Widerstand 10k -> GND

*/

int Sw1Mode = 0;
int Sw2Mode = 0;
int Sw1Pin = 11;
int Sw2Pin = 12;
int LEDPin = 13;

void setup (){

pinMode(Sw1Pin,INPUT);
pinMode(Sw2Pin,INPUT);
pinMode(LEDPin,OUTPUT);
}

void loop(){

Sw1Mode = 0;
Sw2Mode = 0;
Sw1Mode = digitalRead(Sw1Pin);
Sw2Mode = digitalRead(Sw2Pin);

if(Sw1Mode == 1) {

digitalWrite(LEDPin,HIGH);
delay(200);
digitalWrite(LEDPin,LOW);
delay(200);
}

if(Sw2Mode == 1) {

digitalWrite(LEDPin,HIGH);
delay(50);
digitalWrite(LEDPin,LOW);
delay(50);
digitalWrite(LEDPin,HIGH);
}

}

Schaltung

 

Zum Seitenanfang

RC-522 RFID Reader



Ansicht vorne

Ansicht hinten

Pinbelegung
-------------------------
FRFID-C522 -> Arduino
--------------------------
3.3V -> 3,3V
GND -> GND
RST -> 9
SDA(SS) -> 10
MOSI -> 11
MISO -> 12
SCK -> 13

Beispielcode


/*
Pinbelegung
-------------------------
FRFID-C522 -> Arduino
--------------------------
3.3V -> 3,3V
GND -> GND
RST -> 9
SDA(SS) -> 10
MOSI -> 11
MISO -> 12
SCK -> 13
*/

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9
#define SS_PIN 10

MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {

Serial.begin(9600);
while (!Serial);
SPI.begin();
mfrc522.PCD_Init();
ShowReaderDetails();
Serial.println(F("RFID Chip einscannen ..."));
}

void loop() {

if ( ! mfrc522.PICC_IsNewCardPresent()) {
   return;
   }
if ( ! mfrc522.PICC_ReadCardSerial()) {
   return;
   }
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}

void ShowReaderDetails() {

byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
Serial.print(F("MFRC522 Software Version: 0x"));
Serial.print(v, HEX);
if (v == 0x91)
   Serial.print(F(" = v1.0"));
else if (v == 0x92)
   Serial.print(F(" = v2.0"));
else
   Serial.print(F(" (unbekannt)"));
   Serial.println("");

if ((v == 0x00) || (v == 0xFF)) {
   Serial.println(F("ACHTUNG: Kommunikationsfehler, prüfen ob RC522 korrekt    angschlossen ist"));
   }
}


Ausgabe in der serial Konsole

MFRC522 Software Version: 0x91 = v1.0
RFID Chip einscannen ...
Card UID: 0A E5 D5 E5
PICC type: MIFARE 1KB
Sector Block 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AccessBits
15 63 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF [ 0 0 1 ]
62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]

...usw

 

Schaltung

 

Zum Seitenanfang

SD Card Reader



Ansicht vorne

Ansicht hinten

Pinbelegung
SD Card
Reader -> Arduino
------------------
GND -> GND
VCC -> 5V
MISO -> D12
MOSI -> D11
SCK -> D13
CS -> D4

Beispielcode

/*
SD Card Reader Test

Pinbelegund
-----------
SD Card
Reader -> Arduino
------------------
GND -> GND
VCC -> 5V
MISO -> D12
MOSI -> D11
SCK -> D13
CS -> D4

*/

#include <SD.h>

Sd2Card card;
SdVolume volume;
SdFile root;

const int chipSelect = 4;

void setup() {

Serial.begin(9600);

Serial.print("\nInitialisiere SD Card...");

pinMode(10, OUTPUT);

 

if (!card.init(SPI_HALF_SPEED, chipSelect)) {

Serial.println("Initialisiertungsfehler, prüfen:");
Serial.println("* ist eine SD Karte eingelegt?");
Serial.println("* ist die Verkabelung korrekt?");
return;

} else {

Serial.println("Initialisiert ...");
}

Serial.print("\nCard Typ: ");


switch(card.type()) {

case SD_CARD_TYPE_SD1:
   Serial.println("SD1");
   break;
case SD_CARD_TYPE_SD2:
   Serial.println("SD2");
   break;
case SD_CARD_TYPE_SDHC:
   Serial.println("SDHC");
   break;
default:
   Serial.println("Unbekannt");
}

if (!volume.init(card)) {

Serial.println("Kann keine FAT16/FAT32 Partition finden. Bitte SD-Karte mit FAT16 oder FAT32 formatieren.");
return;
}

 

uint32_t volumesize;
Serial.print("\nPartitionstyp ist FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();

volumesize = volume.blocksPerCluster();
volumesize *= volume.clusterCount();
volumesize *= 512;
Serial.print("Volume Groesse (Bytes): ");
Serial.println(volumesize);
Serial.print("Volume Groesse (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume Groesse (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);


Serial.println("\nDateien auf der Karte gefunden: (Name, Datum and Groesse in Bytes): ");
root.openRoot(volume);

root.ls(LS_R | LS_DATE | LS_SIZE);
}

void loop(void) {

// tu nichts
}

 

Ausgabe in der serial Konsole

Initialisiere SD Card...Initialisiert ...

Card Typ: SDHC

Partitionstyp ist FAT32

Volume Groesse (Bytes): 3988783104
Volume Groesse (Kbytes): 3895296
Volume Groesse (Mbytes): 3804

Dateien auf der Karte gefunden: (Name, Datum and Groesse in Bytes):
DATALOG.TXT 2000-01-01 01:00:00 42756
TEST.TXT 2000-01-01 01:00:00 937
INFO.TXT 2015-02-10 20:24:16 10

 

Schaltung

 

Zum Seitenanfang