Inhoudsopgave:

Teller met behulp van de MAX7221: 4 stappen
Teller met behulp van de MAX7221: 4 stappen

Video: Teller met behulp van de MAX7221: 4 stappen

Video: Teller met behulp van de MAX7221: 4 stappen
Video: Breuken optellen met behulp van breukstroken 2024, Juli-
Anonim
Teller met behulp van de MAX7221
Teller met behulp van de MAX7221

Een teller maken die oploopt wanneer een knop wordt ingedrukt met behulp van de MAX7221.

Stap 1: Onderdelen

MAX7221 of MAX7219

Schakelaar

4 7-segments display (gemeenschappelijke kathode)

2 weerstanden: 10k en 9.53k (ik gebruikte een 9.1k en het werkt nog steeds)

Arduino

Stap 2: Het circuit bouwen

Het circuit bouwen
Het circuit bouwen
Het circuit bouwen
Het circuit bouwen
Het circuit bouwen
Het circuit bouwen

Ik heb alleen de pinnen opgeschreven die ik heb gebruikt, je kunt de volledige pinlay-out vinden op de datasheet of ik heb het bijgevoegd. Zorg ervoor dat u uw 7-segmentendisplay opzoekt, want het zal waarschijnlijk verschillen van het mijne, maar de procedure is hetzelfde.

1. Verbind de cijfers 0 - 3 op de MAX7221 met de cijfers 1 - 4 op het display. Het MAX-cijfer 0 maakt verbinding met het display-cijfer 1 enz. Displays zijn gewoon onconventioneel en beginnen bij 1 in plaats van 0.

2. Verbind de segmenten A - G op de MAX7221 met de segmenten A - G op het display.

3. Voorzie de MAX van stroom en aarding. VCC gaat naar pin 19. De 10k-weerstand is ook verbonden met pin 19 en 18. Massa gaat naar pin 4 en 9.

4. De MAX7221 communiceert met de Arduino via SPI (Serial Peripheral Interface). In dit geval zijn slechts 3 draden nodig omdat ik geen MISO (Master In Slave Out) gebruik. Op de MAX7221 sluit je pin 1 (Din) aan op de Arduino, in mijn geval heb ik pin 12 gebruikt. Dit is je MOSI (Master Out Slave In) of de data. Pin 12 op de MAX is CS (Chip Select Input) en zo worden de gegevens in het Shift Register geladen, deze heb ik aangesloten op pin 9 op de Arduino. De laatste verbinding is CLK en dat is pin 13 op de MAX, deze heb ik aangesloten op pin 10 op de Arduino.

Zorg ervoor dat u stroom en aarde levert via de Arduino met 5 volt. Ik kwam het probleem tegen waar mijn Arduino mijn bord niet genoeg stroom gaf.

Dit is voor het MAX7221-gegevensblad. Ook waar de foto's vandaan komen.

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

Stap 3: De schakelaar

De schakelaar
De schakelaar

Ik heb de schakelaar van het bovenstaande schema aangesloten. Gevonden op

Ik gebruikte pin 8 op de Arduino om de schakelaar te bedienen, en een weerstand van 10k.

Stap 4: Coderen

Ik gebruikte de LedControl.h-bibliotheek op GitHub en hun basiscode om de MAX7221 in te schakelen. Ik heb toen de code gewijzigd om te tellen van 0 - 9999 wanneer de knop wordt ingedrukt.

#include "LedControl.h"

int-knop = 8;

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

ongeldige setup() {

pinMode (knop, INPUT);

lc.shutdown(0, false); // MAX7221 staat in de energiebesparende modus, dus we moeten hem wakker maken

lc.setIntensity(0, 15); // Helderheid instellen, max 15

lc.clearDisplay(0); // weergave wissen

}

lege lus(){

int staat = digitalRead (knop);

int ik = 0;

intj = 0;

intk = 0;

intl = 0;

terwijl(1){

staat = digitalRead (knop);

while(staat == 1){

staat = digitalRead (knop);

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

i++;

vertraging (100); // hier kun je mee rommelen

als(i == 10){

ik = 0;

j++;

als(j == 10){

j = 0;

k++;

als(k == 10){

k = 0;

l++;

als(l == 10){

terwijl(1){

lc.setRow(0, 0, 0x3E); // wanneer het display 9999 heeft bereikt, wordt U weergegeven -- 1

lc.setRow(0, 1, 0x1); // In Hexi decimale waarde

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

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

}

}

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

}

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

}

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

}

}

}

}

Aanbevolen: