Fórum témák
- • TV hiba, mi a megoldás?
- • Kávéfőzőgép hiba
- • Muzeális készülékek-alkatrészek restaurálása
- • Radiosonde
- • Kombikazán működési hiba
- • Erősítő építése elejétől a végéig
- • Oszcilloszkóp vétel, mit gondoltok?
- • Felajánlás, azaz ingyen elvihető
- • Rádióamatőrök topikja
- • LCD TV probléma
- • Indukciós főzőlap javítása
- • Bojler javítása, kérdések
- • Gázkazán vezérlő hibák
- • Folyamatábrás mikrokontroller programozás Flowcode-dal
- • HDMI bekötés
- • Westen 240 Fi gázkazán hiba
- • Szünetmentes táp javítása, élesztése
- • Háromfázisú aggregátor
- • Klíma szervizelés, javítás
- • Nyomtató probléma
- • Napelem alkalmazása a lakás energia ellátásában
- • Szobatermosztát bekötése
- • Tina
- • Érdekességek
- • Erősítő mindig és mindig
- • Lemezjátszó beállítása, javítása
- • Padlófűtés vezérlés
- • Li-Po - Li-ion akkumulátor és töltője
- • Labortápegység készítése
- • Tápegységgel kapcsolatos kérdések
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Sonoff kapcsolók informatikai háttere (rendszer topológia)
- • Kapcsolási rajzot keresek
- • EAGLE NYÁK tervező
- • Telefon és LAN hálózat kialakítása
- • Vásárlás, hol kapható?
- • SONY TA-F 590ES MOSFET végfok átalakítása
- • Villanypásztor
- • Elektronikus szulfátoldó (Akku aktivátor)
- • Akkumulátor töltő
- • Klíma beszerelése, fűtés-hűtés házilag
- • Autóelektronika
- • SMD forrasztás profin
- • Számítógép hiba, de mi a probléma?
- • Vicces - mókás történetek
- • Parkside akkuk javìtása
- • Videoton EA 6383 s (tuning)
- • Arduino
- • Elfogadnám, ha ingyen elvihető
- • Ultrahangos párásító
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • PIC - Miértek, hogyanok haladóknak
- • RFID Miértek és hogyanok
- • Elektromos távirányítós kapunyitó
- • Leválasztó transzformátor
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Sajnos a régi kapcsolási rajzom már nincs meg.
Viszont ez alapján nekilátok.
(Hátha)
Köszönöm a segítséget!
MIDI-hez jó a 6N136, vagy 6N138 is. Én is azt használom, a HEstore-ban kapható.
Sziasztok!
Levilágítót építek, egy levilágítót építek arduinos időzítővel. Bővebben: Link
Teszi szépen a dolgát a program, viszont az nem tetszik, hogy másodpercben lehet csak beállítani az időt. Hogy kéne módosítani a programot, hogy az utolsó két digiten a másodpercet 1-59 között, az elsőn pedig a percet állítsam?
Előre is köszönöm, kellemes ünnepeket!
Program
Videó A hozzászólás módosítva: Dec 24, 2021
Ha csak kijelzés módosítása kell, akkor /60 a perc, maradék a másodperc, ha külön állítani szeretnéd, akkor 1 bit (az említett gombnyomással) vagy 1-et vagy 60-at ad hozzá a változóhoz. Vagy lehet még úgy, hogy ha nyomva van, akkor +60, ha nincs, akkor +1.
Kicsot rosszul fogalmaztam, az a problemam, hogy mondjuk masfel percet csak ugy tudok beallítani, hogy 90mp. Ugy szeretnem, hogy 1perc 30mpet allitsak.
Sziasztok építettem egy hétszegmenses órát Arduino nanoval és DS3231 RTC-vel. Az a probléma vele, hogy nem tartja meg, áramszünet után az időt. Mellékelem a programkódot, kérlek nézzétek át mi lehet a baj vele.
Előre is köszönöm.
#include <RTClib.h>
#include <LedControl.h>
//=======================================================================================
// data pin, clock, latch
double hold;
LedControl lc = LedControl(4, 2, 3, 1); //LedControl(DIN, CLK, CS, 1);
//========================================================================================
void setup() {
rtc.begin();
lc.shutdown(0, false);
lc.setIntensity(0, 4); // display brightness (0..15)
lc.clearDisplay(0); // erase display
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //set clock as computer clock
//rtc.adjust(DateTime(2020, 7, 12, 10, 57, 00));
}
//========================================================================================
void loop() {
hold = millis();
while ((hold + 30000) > millis() ) {
DateTime now = rtc.now();
setCol3(now.hour());// Display hour min second hh-mm-ss
setCol2(now.minute());
setCol1(now.second());
lc.setChar (0, 5, '-', false);
lc.setChar (0, 2, '-', false);
}
hold = millis();
while ((hold + 5000) > millis() ) {
DateTime now = rtc.now();
setCol2(now.month()); // Display US date format MM-DD-YY
setCol1(now.day());
setCol3(now.year()-2000);
lc.setChar (0, 5, '-', false);
lc.setChar (0, 2, '-', false);
}
}
//========================================================================================
void setCol1 (byte jam) {
String strBuffer = Konversi(jam);
byte pjg = strBuffer.length() + 1;
char val[pjg];
strBuffer.toCharArray(val, pjg);
lc.setChar (0, 1, val[0], false);
lc.setChar (0, 0, val[1], false);
}
//========================================================================================
void setCol2 (byte mnt) {
String strBuffer = Konversi(mnt);
byte pjg = strBuffer.length() + 1;
char val[pjg];
strBuffer.toCharArray(val, pjg);
lc.setChar (0, 4, val[0], false);
lc.setChar (0, 3, val[1], false);
}
void setCol3 (byte dtk) {
String strBuffer = Konversi(dtk);
byte pjg = strBuffer.length() + 1;
char val[pjg];
strBuffer.toCharArray(val, pjg);
lc.setChar (0, 7, val[0], false);
lc.setChar (0, 6, val[1], false);
}
String Konversi(int nilai) {
if (nilai < 10) {
return "0" + String(nilai);
}
else {
return String(nilai);
}
}
A kapcsolást meg tudod mutatni?
Üdv!
Cseréld ki az elemet a DS3231-ben.
Áldott Ünnepeket mindenkinek!
Sajnos azt már nem találom.
Ha gyári modul, akkor lehet ez a baj. De lehet valamilyen saját tervezésű panel is.
Az már megvolt, sőt az rtc modult is cseréltem.
Ez a sor a setup függvényben:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
A program fordításának időpontját írja bele az RTC-be, minden egyes indításkor.
Akkor ezt tiltsam le azaz kommenteljem beállítás után? A hozzászólás módosítva: Dec 25, 2021
Üdvözletem kellemes karácsonyt mindenkinek!
Ez érdekes, most hogy írtátok, nekem is van egy ilyen modulom, igaz csak deszkamodell, bár már egy éve raktam össze, amolyan kísérletképp csak. Szóval ott van a polcon, nem is törődtem vele.
Na most csak ránéztem, és az enyém pontosan 1 év 17 percet késik...
A 18650-es csak az RTC modulnak szolgáltatja a készenléti feszültséget, az ardut nem táplálja.
Mikor összetákoltam, fel volt töltve az aksi, most rámértem és még 3.8V a feszültsége, tehát nem merült le. Programfeltöltéskor volt beállítva az idő, tehát kb 1 perc+- hiba volt a beállítás miatt maximum.
Most akkor elfelejtett évszámot ugrani vagy mi történhetett?
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
rtc.begin();
lcd.begin(16,2);
rtc.setDOW(5); // Hét napjának beállítása: (1 Monday, 2 Tuesday, 3 Wednesday, 4 Thursday, 5 Friday, 6 Saturday, 7 Sunday)
rtc.setTime(17, 01, 0); // Idő beállítás: (óra, perc, másodperc)
rtc.setDate(21, 8, 2020); // Dátum beállítás: (nap, hónap, év)
}
void loop()
{
lcd.setCursor(0,0);
//lcd.print("Time: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(9,0);
lcd.print(rtc.getTemp());
lcd.print("\xDF" "C");
//lcd.print((char)223);
//lcd.println("C");
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr(FORMAT_LONG, FORMAT_BIGENDIAN, '.'));
delay(1000);
}
Például. De inkább írd meg úgy a szoftvert, hogy állítható legyen az idő nyomógombokkal. Kicsit fapados, hogy program fordítással és feltöltséssel lehet beállítani.
Sajnos programoznnnni nem tudok.
Az általad beírt kódban a 14. és 15. sort így módosítsd, értelem szerűen az akkori dátummal és időponttal:
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //set clock as computer clock
rtc.adjust(DateTime(2020, 7, 12, 10, 57, 00));
Majd ezt töltsd fel az Arduino lapkára. Miután elindult az óra, akkor ismét módosítsd a programkódot erre:
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //set clock as computer clock
//rtc.adjust(DateTime(2020, 7, 12, 10, 57, 00));
Majd ismét töltsd fel. Így az RTC-ben tárolt időpontot nem fogod felülírni minden egyes bekapcsolásnál.
Csak ezt a beállítást használom,
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //set clock as computer clock
beállítás után kikommentelem.
A másik sor mindíg kommentelve van. A hozzászólás módosítva: Dec 25, 2021
Sziasztok!
Van egy Arduino UNO R3 .Tudnátok segíteni abban, hogy ha összekötöm az arduinot a pc-vel akkor nem jeleníti meg az arduino IDE programban az arduino alaplapot a portok listájában. Mi lehet a gond? hogy tudom megoldani? Eredeti az arduino alaplap
Köszönöm
Mindegy, hogy melyiket használod, az a lényeg, hogy miután feltöltötted a programot úgy, hogy nem volt kikommentelve, töltsd rá ismét, de már úgy, hogy ki van kommentelve!
Azért, mert az első feltöltéskor, pontosabban, amikor elindul a program, az rtc.adjust() beállítja az RTC-t. De ha ez benne marad, akkor az Arduino minden egyes újraindításakor az C fordító által az akkori időpontot és dátumot fordítja bele abba a file-ba, ami beleírsz az Arduino lapkába.
Az Arduino IDE alatt, az Eszközök -> Port után elvileg meg kéne jelennie annak a portnak a száma, amin az Arduino alaplapot érzékeli. Ha nem jelenik meg, akkor leggyakoribb hiba a rossz minőségű USB kábel, valamint lehet még driver hiba is, főleg, ha nem WIN10 alatt használod (azt nem írtad, hogy a PC-n milyen oprendszer van). Van, amikor a PC egy másik USB csatlakozóján működik. Amúgy ha rádugod az USB-re, akkor hallatszik a Windows rendszerhangja?
Ha nem eredeti az Uno, akkor olvasd el a topic tetején található szöveget!
Sziasztok.
Atmega2560-al szeretnék 10 kapcsolót (relét) figyelni megszakításból, de az adatlap szerint csak 6 láb képes erre.
Külső eszköz nélkül, hogy lehetne ezt megoldani?
Sziasztok!
Kellemes Ünnepeket Nektek először is!
Megépítettem az alábbi kapcsolást, de DS1307 helyett csak DS1302-es RTC-m van át lehet írni a kódot hozzá?
Tudnátok segíteni?
int digit1 = 11; //PWM Display pin 12 (digit1 is common anonds A1 from right side)
int digit2 = 10; //PWM Display pin 9 (digit2 is common A2)
int digit3 = 9; //PWM Display pin 8 (digit3 is common anods A3)
int digit4 = 6; //PWM Display pin 6 (digit4 is common anods, from left side)
int segA = 2; //Display pin 11
int segB = 3; //Display pin 7
int segC = 4; //Display pin 4
int segD = 5; //Display pin 2
int segE = 12; //Display pin 1
int segF = 7; //Display pin 10
int segG = 8; //Display pin 5
int segDP = 13; // Display pin 3
int pin = 1;
#include <Wire.h>
#include "RTClib.h"
byte SW0 = A0;
byte SW1 = A1;
byte SW2 = A2;
// use for hexa in zecimal conversion
int zh, uh, ore;
int zm, um, miniti;
void setup() {
// Serial.begin(57600);
Wire.begin();
RTC.begin();
// RTC.adjust(DateTime(__DATE__, __TIME__));
// if you need set clock... just remove // from line above this
// part code for flashing LED
Wire.beginTransmission(0x68);
Wire.write(0x07); // move pointer to SQW address
// Wire.write(0x00); // turns the SQW pin off
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave at 1Hz
// Wire.write(0x13); // sends 0x13 (hex) 00010011 (binary) 32kHz
Wire.endTransmission();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
// dht.begin();
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDP, OUTPUT);
pinMode(pin, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
// pinMode(13, OUTPUT);
// Serial.begin(9600);
//Serial.println("test for niq_ro");
pinMode(SW0, INPUT); // for this use a slide switch
pinMode(SW1, INPUT); // N.O. push button switch
pinMode(SW2, INPUT); // N.O. push button switch
digitalWrite(SW0, HIGH); // pull-ups on
digitalWrite(SW1, HIGH);
digitalWrite(SW2, HIGH);
}
void loop() {
DateTime now = RTC.now();
int timp = now.hour()*100+now.minute();
// int timp = (now.minute(), DEC);
// displayNumber(12); // this is number to diplay
// int timp = 1234;
// Serial.print(now.hour(), DEC);
// Serial.print(":");
// Serial.print(now.minute(), DEC);
// Serial.print(" -> ");
// Serial.print(timp);
// Serial.println(" !");
// display parts
for(int i = 250 ; i >0 ; i--) {
if (timp >= 1000) displayNumber01(timp);
else displayNumber02(timp);
}
for(int i = 250 ; i >0 ; i--) {
if (timp >= 1000) displayNumber03(timp);
else displayNumber04(timp);
}
if (!(digitalRead(SW0))) set_time(); // hold the switch to set time
//blinking
}
void set_time() {
byte minutes1 = 0;
byte hours1 = 0;
byte minutes = 0;
byte hours = 0;
while (!digitalRead(SW0)) // set time switch must be released to exit
{
minutes1=minutes;
hours1=hours;
while (!digitalRead(SW1)) // set minutes
{
minutes++;
// converting hexa in zecimal:
zh = hours / 16;
uh = hours - 16 * zh ;
ore = 10 * zh + uh;
zm = minutes / 16;
um = minutes - 16 * zm ;
miniti = 10 * zm + um;
for(int i = 20 ; i >0 ; i--) {
displayNumber01(ore*100+miniti);
}
if ((minutes & 0x0f) > 9) minutes = minutes + 6;
if (minutes > 0x59) minutes = 0;
// Serial.print("Minutes = ");
if (minutes >= 9) Serial.print("0");
// Serial.println(minutes, HEX);
delay(150);
}
while (!digitalRead(SW2)) // set hours
{
hours++;
// converting hexa in zecimal:
zh = hours / 16;
uh = hours - 16 * zh ;
ore = 10 * zh + uh;
zm = minutes / 16;
um = minutes - 16 * zm ;
miniti = 10 * zm + um;
for(int i = 20 ; i >0 ; i--) {
displayNumber01(ore*100+miniti);
}
if ((hours & 0x0f) > 9) hours = hours + 6;
if (hours > 0x23) hours = 0;
// Serial.print("Hours = ");
if (hours <= 9) Serial.print("0");
Serial.println(hours, HEX);
delay(150);
}
Wire. beginTransmission(0x68); // activate DS1307
Wire.write(0); // where to begin
Wire.write(0x00); //seconds
Wire.write(minutes); //minutes
Wire.write(0x80 | hours); //hours (24hr time)
Wire.write(0x06); // Day 01-07
Wire.write(0x01); // Date 0-31
Wire.write(0x05); // month 0-12
Wire.write(0x09); // Year 00-99
Wire.write(0x10); // Control 0x10 produces a 1 HZ square wave on pin 7.
Wire.endTransmission();
// converting hexa in zecimal:
zh = hours / 16;
uh = hours - 16 * zh ;
ore = 10 * zh + uh;
zm = minutes / 16;
um = minutes - 16 * zm ;
miniti = 10 * zm + um;
for(int i = 20 ; i >0 ; i--) {
displayNumber01(ore*100+miniti);
}
// delay(150);
}
}
void displayNumber01(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
void displayNumber02(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
lightNumber(10);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
void displayNumber03(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
void displayNumber04(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
lightNumber(10);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGH
switch (numberToDisplay){
case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
case 1:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 2:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 3:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 4:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 5:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 6:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 7:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 8:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 9:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// all segment are ON
case 10:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
}
}
Pin Change Interrupt-ot 24 lábra állíthatsz be.
Pontosan. Csak arra kell figyelni, hogy ez mind egy ISR-be fut be. Tehát el kell tárolni a bemenetek állapotát. Az ISR-ben pedig lekérdezni az aktuálisat, és összehasonlítani az eltárolttal, hogy kiderüljön, melyik megváltozása okozta a megszakítást.
Köszi.
Megtaláltam PCICR regiszter, port B C D.
Nem láttam a fától az erdőt.
|
|