Hlavní přehled   |   Info a nápověda Přihlásit   |   Registrovat
 
 
Příspěvek umístěný v tematickém vlákně:    Generátor Figuera - Koncepční detaily, odborná diskuze   (str. 2)
 
cimirek   
17.04.2023 13:46
Bydliště: Střední Čechy
846 78 1066 
Dneska jsem vyzkoušel ód pro arduino od UI.
Musím říct, že to nedělalo přesně co jsem požadoval, možná by bylo třeba jinak, lépe formulovat zadání.
Nicméně po několika urgencích a opravách se podařilo to dotáhnout.
Hotový vyzkoušený kód je přiložen. Jen je změna aby bylo možné pozorovat funkci, jsou časy 1,25s a překrytí 0,25s.
Pro eventuální konečné řešení je třeba příkazy delay() nahradit delayMicroseconds()

Video jak to funguje je na
https://ulozto.cz/file/l0OcIKerCiZ2/p1010135-avi#!ZJHjBQR2A2D5ATLkZwyzMGpkMJExAmWnnHAHEx42Fz5hG2WxAD==

---------------- kód ---------------------


const int DELAY_TIME = 1250;
const int OVERLAP_TIME = 250;
int currentOutput = 1;
int direction = 1;

void setup() {
// Nastavení výstupních pinů
for (int i = 1; i <= 8; i++) {
pinMode(i, OUTPUT);
}
}

void loop() {
// Zapínání výstupů v aktuálním směru
digitalWrite(currentOutput, HIGH); // Zapnutí aktuálního výstupu
delay(DELAY_TIME); // Počkejte DELAY_TIME ms
if (currentOutput + direction <= 8 && currentOutput + direction >= 1) {
// Pokud existuje další výstup v aktuálním směru, zapněte ho s překrytím
digitalWrite(currentOutput + direction, HIGH);
delay(OVERLAP_TIME);
}
// Vypnutí aktuálního výstupu
digitalWrite(currentOutput, LOW);
if (currentOutput + direction <= 8 && currentOutput + direction >= 1) {
// Pokud existuje další výstup v aktuálním směru, vypněte ho s překrytím
digitalWrite(currentOutput + direction, LOW);
}
// Přepnutí aktuálního výstupu na další v aktuálním směru
currentOutput += direction;

// Pokud jsme narazili na konec cyklu, změňte směr
if (currentOutput == 9 || currentOutput == 0) {
direction *= -1;
// Pokud jsme měli poslední výstup sepnutý, nevypínat ho, ale pouze změnit směr cyklu
if (currentOutput == 9) {
currentOutput = 8;
} else if (currentOutput == 0) {
currentOutput = 1;
}
}
}
Zvláštní ocenění za úsilí nebo přínosPozitivní ohlasyOznačit příspěvek
  Přejít na příspěvek do vlákna      

 
 
Omforum.cz   |   Nápověda   |   Pravidla fóra   |   Podpořte chod fóra   |   Vytvořil: 2015-2025 Adam Benda
 
 
CC BY-NC-ND 3.0 CZ
Licence Creative Commons
Toto dílo podléhá licenci Creative Commons Uveďte původ-Neužívejte komerčně-Nezpracovávejte 3.0 Česká republika License