Zbernica i2c: PCF8574: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 87: | Riadok 87: | ||
<tabs> | <tabs> | ||
<tab name="AVR C-code"><syntaxhighlight lang="c++" style="background: LightYellow;"> | <tab name="AVR C-code"><syntaxhighlight lang="c++" style="background: LightYellow;"> | ||
#include <avr/io.h> | #include <avr/io.h> |
Verzia z 14:58, 17. máj 2025
Záverečný projekt predmetu MIPS / LS2025 - Kamil Hanišák
Zadanie
Cieľom zadania bolo vytvoriť jednoduchý mikroprocesorový obvod, ktorý umožňuje ovládať viacero LED diód pomocou i2c expanzného obvodu PCF8574, a naprogramovať jednoduchú svetelnú animáciu.

Literatúra:
Analýza a opis riešenia
Na riešenie zadania sme použili zbernicu i2c PCF8574, ktorá nám umožnila ovládať viacero LED diód pomocou len dvoch vodičov – SDA a SCL. Tento čip komunikuje po i2c zbernici s mikrokontrolérom Arduino Acrob s ATmega328P, pričom každý jej výstupný pin možno samostatne nastavovať na logickú 0 alebo 1. Použité komponenty:
- PCF8574P – i2c expander s 8 výstupmi
- 4x LED dióda
- 4x rezistor 220 Ω – ochranné rezistory pred LED diódami
- 2x rezistor 4.7 kΩ – pull-up rezistory na i2c vodiče (SDA a SCL)
- Prepojovacie vodiče a nepájivé pole (breadboard)

Naše konkrétne pripojenie pinov čipu PCF8574 k Arduinu a LED diódam:
Pin PCF8574 | Pripojenie |
---|---|
A0 | Adresovací pin – pripojený na GND |
A1 | Adresovací pin – pripojený na GND |
A2 | Adresovací pin – pripojený na GND |
P0 | Výstup pre LED 1 |
P1 | Výstup pre LED 2 |
P2 | Výstup pre LED 3 |
P3 | Výstup pre LED 4 |
VSS | GND |
P4–P7 | Nepoužité |
INT | Nepripojené (nepoužili sme prerušenie) |
SCL (pin 14) | Pripojené na Arduino A5 + pull-up rezistor na VCC |
SDA (pin 15) | Pripojené na Arduino A4 + pull-up rezistor na VCC |
VDD | Napájanie +5V |
Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.

Algoritmus a program
Základom programu je cyklické zapínanie a vypínanie jednotlivých výstupov čipu PCF8574 tak, aby vytvorili jednoduchú svetelnú animáciu – postupné rozsvietenie, zhasínanie, bežiace svetlo a spoločné blikanie. Pri písaní kódu sme využili knižnice i2cmaster.h a i2cmaster.c z cvičení.
Použité funkcie:
- i2c_init() - Inicializuje i2c zbernicu. Táto funkcia je súčasťou knižnice i2cmaster.h.
- pcf_write(uint8_t data) - Pomocná funkcia, ktorá zabezpečuje zápis jedného bajtu do PCF8574.
- i2c_start(addr)/i2c_write(data)/i2c_stop() - Funkcie z i2cmaster.h pre riadenie zbernice i2c – začatie komunikácie, odoslanie dát, ukončenie prenosu.
- _delay_ms(x) - Časové oneskorenie na vytvorenie vizuálne vnímateľnej animácie LED.
Priebeh algoritmu:
- Postupné rozsvietenie LED 1 → LED 4
- Postupné zhasínanie LED 4 → LED 1
- Bežiace svetlo tam a späť
- Tri spoločné záblesky všetkých LED naraz
#include <avr/io.h>
#include <util/delay.h>
#include "i2cmaster.h"
#define PCF8574_ADDR 0x40
void pcf_write(uint8_t data) {
i2c_start(PCF8574_ADDR + I2C_WRITE);
i2c_write(data);
i2c_stop();
}
int main(void) {
i2c_init();
uint8_t stav = 0xFF; // Výstupné bity (všetky LED zhasnuté – log. 1)
while (1) {
// 1. Postupné rozsvietenie LED
for (uint8_t i = 0; i < 4; i++) {
stav &= ~(1 << i); // nastav bit i na 0, zapni LED
pcf_write(stav);
_delay_ms(200);
}
// 2. Postupné zhasínanie LED
for (int8_t i = 3; i >= 0; i--) {
stav |= (1 << i); // nastav bit i na 1, zhasni LED
pcf_write(stav);
_delay_ms(200);
}
// 3. Bežiace svetlo tam a späť
for (uint8_t i = 0; i < 4; i++) {
pcf_write(~(1 << i)); // iba jeden bit je 0
_delay_ms(150);
}
for (int8_t i = 2; i >= 1; i--) {
pcf_write(~(1 << i));
_delay_ms(150);
}
// 4. Všetky LED bliknú naraz 3x
for (uint8_t i = 0; i < 3; i++) {
pcf_write(0b11110000); //všetky zapnuté
_delay_ms(150);
pcf_write(0xFF); //všetky vypnuté
_delay_ms(150);
}
_delay_ms(500); // pauza medzi cyklami
}
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku hotového zariadenia.

Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.