Talaan ng mga Nilalaman:

Counter Gamit ang MAX7221: 4 Hakbang
Counter Gamit ang MAX7221: 4 Hakbang

Video: Counter Gamit ang MAX7221: 4 Hakbang

Video: Counter Gamit ang MAX7221: 4 Hakbang
Video: Counter Move For 1-16 Na Gamit Ang 1-15 2024, Hulyo
Anonim
Counter Gamit ang MAX7221
Counter Gamit ang MAX7221

Lumilikha ng isang counter na nagdaragdag kapag ang isang pindutan ay pinindot gamit ang MAX7221.

Hakbang 1: Mga Bahagi

MAX7221 o MAX7219

Lumipat

4 7-Segment Display (karaniwang cathode)

2 Resistors: 10k at 9.53k (Gumamit ako ng 9.1k at gumagana pa rin ito)

Arduino

Hakbang 2: Pagbuo ng Circuit

Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit

Sinulat ko lang ang mga pin na ginamit ko, mahahanap mo ang kumpletong layout ng pin sa datasheet o ikinabit ko ito. Siguraduhing tingnan ang iyong 7-Segment Display dahil malamang na magkakaiba ito sa minahan ngunit pareho ang pamamaraan.

1. Ikonekta ang Mga Digit 0 - 3 sa MAX7221 sa Mga Digit 1 - 4 sa display. Ang MAX digit 0 ay kumokonekta sa ipinapakita na digit 1 atbp. Ang mga display ay hindi kinaugalian lamang at nagsisimula sa 1 sa halip na 0.

2. Ikonekta ang Mga Segment A - G sa MAX7221 sa Mga Segment A - G sa display.

3. Magkaloob ng lakas at lupa sa MAX. Ang VCC ay papunta sa pin 19. Ang 10k resistor ay konektado din sa pin 19 at 18. Ang ground ay papunta sa pin 4 at 9.

4. Ang MAX7221 ay nakikipag-usap sa Arduino sa pamamagitan ng SPI (Serial Peripheral Interface). Sa kasong ito, 3 wires lamang ang kailangan dahil hindi ako gumagamit ng MISO (Master In Slave Out). Sa MAX7221 ikonekta ang pin 1 (Din) sa Arduino, sa aking kaso ginamit ko ang pin 12. Ito ang iyong MOSI (Master Out Slave In) o ang data. Ang Pin 12 sa MAX ay CS (Chip Select Input) at kung paano na-load ang data sa Shift Register, ikinonekta ko ito upang i-pin ang 9 sa Arduino. Ang huling koneksyon ay CLK na kung saan ay pin 13 sa MAX, ikinonekta ko ito sa pin 10 sa Arduino.

Siguraduhin na magbigay ng lakas at lupa sa pamamagitan ng Arduino gamit ang 5 volts. Naranasan ko ang problema kung saan hindi binibigyan ng aking Arduino ng sapat na lakas ang aking board.

Ito ay para sa MAX7221 Datasheet. Saan din nagmula ang mga larawan.

www.mouser.com/datasheet/2/256/max7219-max…

Hakbang 3: Ang Lumipat

Ang Lumipat
Ang Lumipat

I-wires ko ang switch mula sa Schematic sa itaas. Natagpuan sa

Gumamit ako ng pin 8 sa Arduino upang makontrol ang switch, at isang 10k resistor.

Hakbang 4: Code

Ginamit ko ang LedControl.h library na natagpuan sa GitHub, at ang kanilang pangunahing code upang i-on ang MAX7221. Pagkatapos ay binago ko ang code upang mabilang mula 0 - 9999 kapag pinindot ang pindutan.

# isama ang "LedControl.h"

int button = 8;

LedControl lc = LedControl (12, 10, 9, 1);

walang bisa ang pag-setup () {

pinMode (pindutan, INPUT);

lc.shutdown (0, false); Ang // MAX7221 ay nasa mode ng pag-save ng kuryente, kaya kailangan natin itong gisingin

lc.setIntensity (0, 15); // Setting brightness, max 15

lc.clearDisplay (0); // clearing display

}

void loop () {

int state = digitalRead (button);

int i = 0;

int j = 0;

int k = 0;

int l = 0;

habang (1) {

estado = digitalRead (pindutan);

habang (estado == 1) {

estado = digitalRead (pindutan);

lc.setDigit (0, 3, i, false);

ako ++;

pagkaantala (100); // maaari kang magulo dito

kung (i == 10) {

i = 0;

j ++;

kung (j == 10) {

j = 0;

k ++;

kung (k == 10) {

k = 0;

l ++;

kung (l == 10) {

habang (1) {

lc.setRow (0, 0, 0x3E); // kapag umabot ang display sa 9999 ipapakita nito ang U - 1

lc.setRow (0, 1, 0x1); // Sa Hexi decimal na halaga

lc.setRow (0, 2, 0x1);

lc.setDigit (0, 3, 1, false);

}

}

lc.setDigit (0, 0, l, false);

}

lc.setDigit (0, 1, k, false);

}

lc.setDigit (0, 2, j, false);

}

}

}

}

Inirerekumendang: