Arduino für FunkAmateure

Ähnliche Dokumente
Arduino für FunkAmateure

Projekt Nr. 15: Einen elektronischen Würfel erstellen

Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI)

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

SINNsorik Wahrnehmen durch Sensoren NAME, KLASSE:

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Einführung in Mikrokontroller Benutzung mit dem Arduino Board. Ramon Hofer ICVR

Arduino, IR Fernbedienung dekodieren

HARDWARE-PRAKTIKUM. Versuch L-1. Schaltnetze. Fachbereich Informatik. Universität Kaiserslautern

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

analoge Ein- und Ausgänge

Arduino - Einfacher Teiler

Der I²C-Bus. Vorstellung des Inter-Integrated Circuit -Bus. Aufbau und Funktionsweise. Beispiel PortExpander am Arduino

Arduino und die Physical Computing Revolution Playground AV Anton Bachmayr - Netzteil

ERWEITERUNGSSHIELD MIT ANALOGEN EINGÄNGEN

Bei jedem Arduino-Projekt muss man ein Grundgerüst "bauen". Das sieht dann so aus:

Um überhaupt produktiv arbeiten zu können, sind eine Reihe grundlegender Vorbereitungen notwendig:

Einführung in die Arduino-Programmierung II

Android + Arduino Hardware steuern mit Android. Entwicklertag Karlsruhe, Sebastian Wastl

Parallel-IO. Ports am ATmega128

Evolution der LED-Ansteuerung. Gerrit Buhe, DL9GFA AATiS-Lehrerfortbildung, HAM-Radio 2014

ARDUINO Übung. Inhalt:

Drücken Sie (später) bei Speichere Änderungen in der Bibliothek default? auf Nein.

Jan Monsch. Donnerstag, 2. Mai 13

GAL 16V8. 4. Laboreinheit - Hardwarepraktikum SS 2002 VCC / +5V. Eingang / Clock. 8 konfigurierbare Ausgangszellen. 8 Eingänge GND / 0V.

Handout zum Vortrag: Einfache integrierte digitale Schaltungen von Andreas Bock

Erste Schritte. In diesem Kapitel lernen Sie Folgendes:

DIGITALTECHNIK 10 SCHIEBEREGISTER

Mark VHS Augsburg Einführung in die Mikrocontroller-Programmierung.

Eine Roboter-Kanone. Projekt 20

Steuern und Messen mit Raspberry Pi

Was ist Arduino? Historie Der Kern Entwicklungsumgebung Hardware Software Und wozu das Ganze? Workshop Mikrorechner 2012 A.

Teile und Herrsche. Themen heute. Eigene Funktionen Parameter Fallunterscheidungen Fehlersuche. Programmieren für Ingenieure Sommer 2015

I8O8-USB. Serial Input and Output Board with. 8 Inputs 8 Outputs 8 ADC-Inputs USB (FTDI) Rev rtec.rohrhofer.org

Ulrich Stein

8.3 PCA2.D12 Display-Modul mit 4 Ziffern

Speicherung digitaler Signale

Laborübungen LABORÜBUNGEN DIGITALTECHNIK VERDRAHTUNGSANWEISUNGEN UND LEGENDE

Kapitel 5: Schieberegister. Anwendungen von Schieberegistern. Grundschaltung eines Schieberegisters. Kapitelverzeichnis (Buch Künzli)

Speicherregister/Latches (1) 1

i2c-bus.de I2C-001 KURZBESCHREIBUNG I 2 C Modul mit PCF Bit I/O Port-Expander Dokument NR.: I2C-001-D-01

Integrierte Schaltungen

1 Anmerkungen zur Entwicklung von GALs mit LOG/iC

Steuerung von Geräten mit dem Mikrocontroller. von. Annemarie Bauer Dr. Birgit Berger Dr. Daniel Roth Katrin Schmid Michael Schnaus

C++ mit dem Arduino (Uno und Mega2560)

i2c-bus.de I2C-002 KURZBESCHREIBUNG I 2 C Modul mit PCA Bit I/O Port-Expander Dokument NR.: I2C-002-D-01

Arduino Uno Bastelecke

Digitalelektronik 4 Vom Transistor zum Bit. Stefan Rothe

Haftkünstler auf dem Prüfstand. Online Ergänzung HOLGER FLORIAN BOHN OLGA SPECK THOMAS SPECK

Tabelle in Dateiformat

Einen eigenen Arduino bauen Version 1.0 Created Erik Bartmann Internet

Bericht. Digitallabor. Hochschule Karlsruhe N1. Aufgabe 5.6 Stoppuhr. Teilnehmer: Natalia Springer, Tong Cha. Datum:

Praktikum Digitaltechnik SS Versuchsbeschreibungen

Lichtwürfel. Ein Projekt in der Vertiefung Prozessdatenverarbeitung. Michael Frey mail at mfrey dot net. July 3, 2008

Einführung in die Arduino Programmierung am Beispiel eines Roboters.

8.1 Grundsätzlicher Aufbau der Beispiele

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

Mikrocontroller-Einstieg

Ringlicht-v3 - Frei konfigurierbares Ringlicht mit RS232 Anbindung. Kurzbeschreibung

Tech Note: IO Belegung des RESI-LC-CPU Controllers

Highspeedaufnahmen mit dem Arduino Uno Board

Tietze, Schenk: Halbleiterschaltungstechnik (Kap. 10) Keller / Paul: Hardwaredesign (Kap. 5) L. Borucki: Digitaltechnik (Kap.

Einführung in die technische Informatik

BASIC-Tiger Application Note No. 055 Rev Segment-Displays mit Jumbo-Anzeigen. Gunther Zielosko. 1. Einleitung

Versuch D3: Busse, Speicher und Ampelsteuerung mit Speicher

easyident Türöffner mit integriertem USB Interface

Entwicklungsboard 16F1824

I2C Serial 2.6 LCD Modul. Verwendung mit einem Arduino

PLIN-Slave Test-Slave für den LIN-Bus mit diversen I/Os. Benutzerhandbuch V1.1.0

V.24/TTY-Wandler für SIMATIC S5- Steuerungen

Bluetooth Datenerfassungs- und Steuerungsmodul HB625

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

HVSP Fusebit Programmer von guloshop.de

Inhaltsverzeichnis. Aufgabenstellung 2. Idee der Schaltung 2. Blockschaltbild 3. Schaltplan 4. Stückliste 11. Routen 12. Fertigen 15.

Informatik Enlightened. Station 0 - Einstieg

Vorschläge für kleine Bastel-Projekte im Rahmen des Arduino-Workshops

Arduino-Lichtorgel Projektbericht

Snake Projekt. Jan Scholz. 16. März 2013

Betriebsanleitung Universal Data Manager Modbus-Slave

Schaltungshinweise zum Linux Control System mit DIL/NetPC DNP/7520

Zusatzplatine ZIB2-PDx-N für Plug & Drive Motoren PDx-N

Produktinformationen. Basis Set Atmel Atmega8 & ISP Programmer. Lieferumfang :

Beschaltung eines Mikrocontrollers. Jordi Blanch Sierra Steuerungsgruppe

Humboldt-Universität zu Berlin Institut für Physik. 1. Einführung. Seite 1 von 9. Versuch 8 Digitale Logik

grifo Mini Module Test 2

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Raspberry Pi Projekt Hygrometer

Musterlösungen. zu den Übungsaufgaben vom

Siemens. Siemens. SLx0xx LESER

Felder und Schleifen. Themen heute. Felder Schleifen Heartbleed. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Aufgabenstellung Praktikum Mikrorechentechnik Sommersemester 2014

PMC1. 1. Eigenschaften. 2. Anschluß. Programmierbarer Matrix- Tastatur Controller

Praktikum Digitalschaltungen

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Lösungen zum Kurs "Mikrocontroller Hard- und Software

Ein Mikrocontroller ist ein Mikrochip, der alle benötigten Komponenten (sozusagen das Zubehör) bereits in sich trägt. Er sieht genauso aus wie 11

Umbau eines Saug- und Wisch Roboters auf ARDUINO Steuerung

Schiebe- und Füllregister. ST-Programmierung nach IEC

microsrcp Photo by Nicholas Zambetti, Modelleisenbahnsteuerung auf Basis von standarddisierten Microcontrollerboards

Transkript:

Arduino für FunkAmateure Arduino Einführung Teil 10 7-Segment LED mit Schieberegister Wie gehe ich am besten vor? 1. Was will ich machen? 2. Bauteile 3. Aufbau 7-Segment Anzeige I und II 4. Aufbau Schieberegister I, II und III 5. Überlegungen zum Schieberegister SN74HC595N 6. Schaltplan 7-Segment Anzeige 7. Vorversuch 5161AS 8. Vorversuch 74HC595 9. Vorversuch Schieberegister 74HC595 I und II 10. Sketch Versuch 1 Countdown 11. Sketch Versuch 2 Schlange

Was will ich machen? Vorversuch 7-Segment Anzeige 5161AS Vorversuch Schieberegister 74HC595 Versuch 1: Countdown Zuordnung der 7-Segment-Kontakte zu den Segmenten A bis G und DP. Muster programmieren. Arduino-Sketch mit 1fachem Array shiftout()-funktion Die Ziffern 0 bis 9 sollen im Sekundenrythmus herunter gezählt werden. Versuch 2: Schlange Arduino-Sketch mit 1fachem Array shiftout()-funktion Die Segmente werden durchlaufen

Bauteile? Vorversuch 7-Segment Anzeige Vorversuch Schieberegister Versuche 1 und 2 ALLNET-Bausatz: Steckbrett 7-Segment Anzeige 5161AS 330 Ω Widerstände Spannungsquelle < 5V ALLNET-Bausatz: Steckbrett 7-Segment Anzeige 5161AS 330 Ω Widerstände Schieberegister SN74HC595 Bauteile s.o.

Aufbau 7-Segment Anzeige I Datenblatt TAIWAN OASIS LED DATA SHEET: TOS-5161AS PINs LED-PINS: +5V; gemeinsame Kathode/GND Segmente PIN-Belegung Zuordnung Segmente und PINs Vorwiderstand Funktion Bei 5V und 12 ma ca. 330 Ω Über die PINs 1, 2, 4, 5, 6, 7, 9, 10 werden die Segmente angesteuert. An den PINs 3 oder 8 liegt GND.

Aufbau 7-Segment Anzeige II Wahrheitstabelle Ziffern (ohne DP) Auswahl von Kombinationen (möglich sind 128)

Aufbau Schieberegister I Datenblatt NXP Semiconductors DATA SHEET: 74HC595 Anwendung Wandelt serielle Daten in parallele Daten um: 8-Bit serielle Eingabe in 8-Bit parallele Ausgabe Pin-Belegung Symbol Pin Beschreibung Q1, Q2, Q3, Q4, Q5, Q6, Q7 1, 2, 3, 4, 5, 6, 7 Parallele Ausgänge Q1 bis Q7 GND 8 Masse (0 V) Q7 9 Serieller Datenausgang MR 10 Master Reset SH_CP 11 Schiebetakt (shift clock) ST_CP 12 Speichertakt (store clock) OE 13 Ausgangssteuerung DS 14 Serieller Dateneingang Q0 15 Paralleler Ausgang Q0 VCC 16 Betriebsspannung

Aufbau Schieberegister II Beschaltung Symbol Pin Beschreibung Beschaltung Q1, Q2, Q3, Q4, Q5, Q6, Q7 1, 2, 3, 4, 5, 6, 7 Parallele Ausgänge Q1 bis Q7 -> Vorwiderstand -> Segment GND 8 Masse Arduino GND Q7 9 Serieller Datenausgang unbenutzt MR 10 Master Reset auf HIGH (Arduino +5V) SH_CP 11 Schiebetakt (shift clock) Arduino PIN 11 ST_CP 12 Speichertakt (store clock) Arduino PIN 10 OE 13 Ausgangssteuerung auf LOW (Arduino GND ) DS 14 Serieller Dateneingang Arduino PIN 12 Q0 15 Paralleler Ausgang Q0 -> Vorwiderstand -> Segment VCC 16 Betriebsspannung Arduino +5V

Aufbau Schieberegister III Funktion Schieberegister

Überlegungen zum Schieberegister SN74HC595N Ziel Algorithmus für Schieberegister Anstelle von 8 Arduino-Pins werden nur 3 Arduino-Pins benötigt. Mit einem Schieberegister lassen sich 8 Ausgänge steuern. 1. Schiebetaktflanke und Speichertaktflanke können auf HIGH oder LOW stehen 2. Auf den Dateneingang (DS) den gewünschten Wert legen: HIGH oder LOW 3. Einen Schiebetakt ausführen (SH_CP), dazu den PIN zuerst auf LOW dann auf HIGH setzen. 4. Sind alle 8 Bit im Schieberegister dann einen Speichertakt ausführen (ST_CP), dazu den PIN zuerst auf LOW dann auf HIGH setzen. Der Wert im Speicherregister bleibt bis zum nächsten Speichertakt erhalten. Der Wert im Schieberegister bleibt bis zum nächsten Schiebetakt erhalten. Programmierung Da die 8 Ausgänge gleichzeitig gesetzt werden, müssen die gewünschten Zustände immer in einem Byte vorliegen. Um das Schieberegister mit 8 Bit zu füllen, bietet die Arduino-IDE die Funktion: shiftout(datapin, clockpin, bitorder, value) an.

Schaltplan 7-Segment Anzeige

Vorversuch 5161AS Aufgabe Verbinde Kontakt 3 oder 8 über einen geeigneten Widerstand mit Masse. Verbinde nacheinander die Kontakte 1, 2, 4, 5, 6, 7, 9, 10 mit ca. 5 V. Notiere unten die Zuordnungen. A B C D E F G DP 1 2 4 5 6 7 9 10 7-Segment an Schieberegister 7-Segment E D C DP B A F G 7-Segment 1 2 4 5 6 7 9 10 74HC595 Q4 Q3 Q2 Q7 Q1 Q0 Q5 Q6

Vorversuch 74HC595 Beschreibung ALL_7Segment_0.ino 74HC595 PIN Arduino PIN DS 14 Dateneingang datapin 12 SH_CP 11 Schiebetakt clockpin 11 ST_CP 12 Speichertakt latchpin 10 Muster anzeigen Werte des Musters bzw. Schieberegisters A B C D E F G DP 1 0 1 0 1 0 1 0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

Vorversuch Schieberegister 74HC595 I // ALL_7Segment_0.ino // functions.ino (zweiter TAB) // PIN verbunden mit DS, Eingang am Schieberegister int datapin = 12; // PIN verbunden mit SH_CP (SHIFT CLOCK) int clockpin = 11; // PIN verbunden mit ST_CP (STORE CLOCK) int latchpin = 10; void setup() { //Pins als OUTPUT pinmode(latchpin, OUTPUT); pinmode(clockpin, OUTPUT); pinmode(datapin, OUTPUT); // Es soll nachfolgendes Muster angezeigt werden: // A B C D E F G DP // Muster { 1, 0, 1, 0, 1, 0, 1, 0 // LSBBIT des Musters zuerst an datapin, also das ganz rechts stehende Bit digitalwrite(12, 0); // Segment DP // Schiebtakt: Schieberegister um eine Stelle verschieben // Funktion schiebetakt() siehe nachfolgende Folie schiebetakt(); digitalwrite(12, 1); // Segment G schiebetakt(); digitalwrite(12, 0); // Segment F schiebetakt(); digitalwrite(12, 1); // Segment E schiebetakt(); digitalwrite(12, 0); // Segment D schiebetakt(); digitalwrite(12, 1); // Segment C schiebetakt(); digitalwrite(12, 0); // Segment B schiebetakt(); digitalwrite(12, 1); // Segment A schiebetakt(); // Speichertakt: Schieberegister nach Speicherregister kopieren // die Ausgänge Q0 bis Q7 damit setzen, das Muster leuchtet auf // Funktion speichertakt() siehe nachfolgende Folie speichertakt(); void loop() {

Vorversuch Schieberegister 74HC595 II // functions.ino in einem zweiten TAB der Arduino-IDE void schiebetakt(){ // Schieberegister (SH_CP-Takt) um eine Stelle weiterschieben digitalwrite(clockpin, LOW); digitalwrite(clockpin, HIGH); void speichertakt(){ // Schieberegister nach Speicherregister (ST_CP-Takt) kopieren digitalwrite(latchpin, LOW); digitalwrite(latchpin, HIGH);

Sketch Versuch 1 Countdown // ALL_7Segment_1.ino und functions.ino (zweiter TAB) // Countdown int datapin = 12; int clockpin = 11; int latchpin = 10; // 1-dimensionales Array für das definieren der Ziffern 0 bis 9; 10 Ziffern mit je 8 Segmenten byte datasegment[10] = { B11111100, B01100000, B11011010, B11110010, B01100110, // 0, 1, 2, 3, 4 B10110110, B10111110, B11100000, B11111110, B11110110 ; // 5, 6, 7, 8, 9 void setup() { //Pins als OUTPUT pinmode(latchpin, OUTPUT); pinmode(clockpin, OUTPUT); pinmode(datapin, OUTPUT); void loop() { // Schleife durchläuft die Ziffern 9 bis 0; der Index eines Arrays beginnt mit 0 for (int number = 9; number >= 0; number--){ // LSBFIRST bedeuted, dass das Byte von rechts nach links gelesen wird shiftout(datapin, clockpin, LSBFIRST, datasegment[number]); // Schieberegister nach Speicherregister speichertakt(); delay(1000);

Sketch Versuch 2 Schlange // ALL_7Segment_2.ino und functions.ino (zweiter TAB) // Schlange int datapin = 12; int clockpin = 11; int latchpin = 10; // 1-dimensionales Array für: // A B C D E F G // B10000000, B01000000, B00100000, B00010000, B00001000, B00000100, B00000010 byte datasegment[] = { B10000000, B10000000 B01000000, B01000000 B00000010, B00000010 B00001000, B00001000 B00010000, B00010000 B00100000, B00100000 B00000010, B00000010 B00000100, B00000100 ; void setup() { pinmode(latchpin, OUTPUT); pinmode(clockpin, OUTPUT); pinmode(datapin, OUTPUT); void loop() { for (int seg = 0; seg <= sizeof(datasegment) - 1; seg++){ shiftout(datapin, clockpin, LSBFIRST, datasegment[seg]); // Schieberegister nach Speicherregister speichertakt(); delay(1000);