Svetelný efekt s obvodom 74595: Rozdiel medzi revíziami
Zo stránky SensorWiki
Vytvorená stránka „Záverečný projekt predmetu MIPS / LS2024 - '''Meno Priezvisko''' == Zadanie == Sem príde text zadania, ak bolo len voľne formulované, rozpíšte ho podrobnejši…“ |
Bez shrnutí editace |
||
(16 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 1: | Riadok 1: | ||
Záverečný projekt predmetu MIPS / LS2024 - '''Meno Priezvisko''' | Záverečný projekt predmetu MIPS / LS2024 - '''Meno Priezvisko''' | ||
__TOC__ | |||
== Zadanie == | == Zadanie == | ||
Mojou úlohou bolo vytvoriť obvod za použitia posuvného registra 74HC595. Návrh bol vytvoriť pomocou LED diód svetelný efekt s auta KITT zo slávneho seriálu Knight rider. | |||
[[Obrázok: | [[Obrázok:74HC595.jpg|400px|thumb|center|Posuvný register 74HC595]] | ||
'''Literatúra:''' | '''Literatúra:''' | ||
* [ | * [https://lastminuteengineers.com/74hc595-shift-register-arduino-tutorial/ Dokumentácia k posuvnému registru] | ||
== Analýza a opis riešenia == | == Analýza a opis riešenia == | ||
Daný register má 16 nožičiek, pričom 8 nožičiek sú výstupy a 3 sú vstupy. Pomocou schémy rozloženia pinou som daný register zapojil k vývojovej doske arduino a pripojil ledky. | |||
[[Súbor: | [[Súbor:PIN.jpg|400px|thumb|center|PIN LAYOUT 74HC595]] | ||
Následne pomocou schémy zapojenia pripojíme na výstupy ledky. | |||
[[Súbor: | [[Súbor:schema2.png|800px|thumb|center|Schéma zapojenia posuvného registra.]] | ||
Riadok 33: | Riadok 32: | ||
<tabs> | <tabs> | ||
<tab name="AVR C-code"><source lang="c++" style="background: LightYellow;"> | <tab name="AVR C-code"><source lang="c++" style="background: LightYellow;"> | ||
#include <avr/io.h> | #include <avr/io.h> // Pripojenie knižnice pre vstupno/výstupné operácie AVR | ||
#include <util/delay.h> // Pripojenie knižnice pre oneskorenia | |||
#define latchPin PD5 // Definovanie pinu pre latch (úložný register) | |||
#define clockPin PD6 // Definovanie pinu pre hodinový signál | |||
#define dataPin PD4 // Definovanie pinu pre dátový signál | |||
int hodnota; // Premenná pre ukladanie hodnôt posuvného registra | |||
void shiftOut() { // Definícia funkcie pre posúvanie dát na posuvný register | |||
int i; | |||
for (i = 0; i < 8; i++) { | |||
if (hodnota & (1 << i)) { // Ak je i-tý bit v hodnote zapnutý | |||
PORTD |= (1 << dataPin); // Zapnúť dátový pin | |||
} else { // Inak | |||
PORTD &= ~(1 << dataPin); // Vypnúť dátový pin | |||
} | |||
if (hodnota & (1 << (7 - i))) { // Ak je (7 - i)-tý bit v hodnote zapnutý | |||
PORTD |= (1 << dataPin); // Zapnúť dátový pin | |||
} else { // Inak | |||
PORTD &= ~(1 << dataPin); // Vypnúť dátový pin | |||
} | |||
// Toggle clock pin to shift data | |||
PORTD |= (1 << clockPin); // Nastaviť hodinový pin na vysokú úroveň | |||
PORTD &= ~(1 << clockPin); // Nastaviť hodinový pin na nízku úroveň | |||
} | |||
} | } | ||
</ | void updateShiftRegister() { | ||
< | PORTD &= ~(1 << latchPin); // Nastaviť pin latch na nízku úroveň | ||
// Shift out data | |||
shiftOut(dataPin, clockPin); // Posunúť dáta na posuvný register | |||
PORTD |= (1 << latchPin); // Nastaviť pin latch na vysokú úroveň | |||
} | |||
int main(void) { | |||
DDRD |= (1 << latchPin) | (1 << dataPin) | (1 << clockPin); // Nastaviť piny ako výstupné | |||
while (1) { | |||
hodnota = 0b11100000; // Nastaviť počiatočnú hodnotu na 0b11100000 (prvé 3 LED zapnuté) | |||
for (int i = 0; i < 6; i++) { // Cyklus pre každý bit | |||
updateShiftRegister(); // Aktualizovať hodnoty na posuvnom registri | |||
hodnota = hodnota >> 1; // Posunúť hodnotu o 1 bit doprava | |||
_delay_ms(100); // Oneskorzenie 200 ms | |||
} | |||
hodnota = 0b00000111; // Nastaviť hodnotu na 0b00000111 (posledné 3 LED zapnuté) | |||
for (int i = 0; i < 6; i++) { // Cyklus pre každý bit | |||
updateShiftRegister(); // Aktualizovať hodnoty na posuvnom registri | |||
hodnota = hodnota << 1; // Posunúť hodnotu o 1 bit doľava | |||
_delay_ms(100); // Oneskorzenie 200 ms | |||
} | |||
} | |||
return 0; // Návratová hodnota | |||
} | |||
</source></tab> | </source></tab> | ||
</tabs> | </tabs> | ||
V prílohe je udaný Zdrojový kód pre daný program | |||
Zdrojový kód | |||
Zdrojový kód: [[Médiá:74HC595OliverKramla.zip|74HC595OliverKramla.zip]] | |||
=== Overenie === | === Overenie === | ||
Podľa schémy zapojenia som zapojil posuvný register k ledkám a Arduinu a do Arduina som nahral vyššie uvedený program | |||
[[Súbor: | [[Súbor:zapojenie2.jpg|400px|thumb|center|Aplikácia.]] | ||
'''Video:''' | '''Video:''' | ||
<center><youtube> | <center><youtube>XnieDsi0NWc</youtube></center> | ||
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte. | Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte. | ||
[[Category:AVR]] [[Category:MIPS]] | [[Category:AVR]] [[Category:MIPS]] |
Aktuálna revízia z 13:42, 16. máj 2024
Záverečný projekt predmetu MIPS / LS2024 - Meno Priezvisko
Zadanie
Mojou úlohou bolo vytvoriť obvod za použitia posuvného registra 74HC595. Návrh bol vytvoriť pomocou LED diód svetelný efekt s auta KITT zo slávneho seriálu Knight rider.
Literatúra:
Analýza a opis riešenia
Daný register má 16 nožičiek, pričom 8 nožičiek sú výstupy a 3 sú vstupy. Pomocou schémy rozloženia pinou som daný register zapojil k vývojovej doske arduino a pripojil ledky.
Následne pomocou schémy zapojenia pripojíme na výstupy ledky.
Algoritmus a program
Algoritmus programu je....
#include <avr/io.h> // Pripojenie knižnice pre vstupno/výstupné operácie AVR
#include <util/delay.h> // Pripojenie knižnice pre oneskorenia
#define latchPin PD5 // Definovanie pinu pre latch (úložný register)
#define clockPin PD6 // Definovanie pinu pre hodinový signál
#define dataPin PD4 // Definovanie pinu pre dátový signál
int hodnota; // Premenná pre ukladanie hodnôt posuvného registra
void shiftOut() { // Definícia funkcie pre posúvanie dát na posuvný register
int i;
for (i = 0; i < 8; i++) {
if (hodnota & (1 << i)) { // Ak je i-tý bit v hodnote zapnutý
PORTD |= (1 << dataPin); // Zapnúť dátový pin
} else { // Inak
PORTD &= ~(1 << dataPin); // Vypnúť dátový pin
}
if (hodnota & (1 << (7 - i))) { // Ak je (7 - i)-tý bit v hodnote zapnutý
PORTD |= (1 << dataPin); // Zapnúť dátový pin
} else { // Inak
PORTD &= ~(1 << dataPin); // Vypnúť dátový pin
}
// Toggle clock pin to shift data
PORTD |= (1 << clockPin); // Nastaviť hodinový pin na vysokú úroveň
PORTD &= ~(1 << clockPin); // Nastaviť hodinový pin na nízku úroveň
}
}
void updateShiftRegister() {
PORTD &= ~(1 << latchPin); // Nastaviť pin latch na nízku úroveň
// Shift out data
shiftOut(dataPin, clockPin); // Posunúť dáta na posuvný register
PORTD |= (1 << latchPin); // Nastaviť pin latch na vysokú úroveň
}
int main(void) {
DDRD |= (1 << latchPin) | (1 << dataPin) | (1 << clockPin); // Nastaviť piny ako výstupné
while (1) {
hodnota = 0b11100000; // Nastaviť počiatočnú hodnotu na 0b11100000 (prvé 3 LED zapnuté)
for (int i = 0; i < 6; i++) { // Cyklus pre každý bit
updateShiftRegister(); // Aktualizovať hodnoty na posuvnom registri
hodnota = hodnota >> 1; // Posunúť hodnotu o 1 bit doprava
_delay_ms(100); // Oneskorzenie 200 ms
}
hodnota = 0b00000111; // Nastaviť hodnotu na 0b00000111 (posledné 3 LED zapnuté)
for (int i = 0; i < 6; i++) { // Cyklus pre každý bit
updateShiftRegister(); // Aktualizovať hodnoty na posuvnom registri
hodnota = hodnota << 1; // Posunúť hodnotu o 1 bit doľava
_delay_ms(100); // Oneskorzenie 200 ms
}
}
return 0; // Návratová hodnota
}
V prílohe je udaný Zdrojový kód pre daný program
Zdrojový kód: 74HC595OliverKramla.zip
Overenie
Podľa schémy zapojenia som zapojil posuvný register k ledkám a Arduinu a do Arduina som nahral vyššie uvedený program
Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.