RomanB
Vytvořené odpovědi
-
AutorPříspěvky
-
RomanBÚčastník
Zdravím, použití Arduina pro tuto funkci není moc vhodné, držel bych se raději logiky pomocí relátek a časového relé. Já osobně mám na cirkuli jenom otočný přepínač + ochrany a je to dostačující.
Pokud se podíváš na schéma spouštění s relátky, uvidíš, že cívky stykačů jsou vzájemně blokovány a to je velmi důležité i v případě použití Arduina. To aby stykače „nešly do sebe“. Dále doporučuji použít nadproudovou ochranu (pomocný kontakt propojit s cívky stykačů) nebo motorový spouštěč a ten může zároveň plnit funkci hlavního vypínače. V logice by měl být také použitý nouzový STOP, ale ne jako vstup do Arduina.
Funkce delay() bych se nebál a signál pro sepnutí relátek je LOW ne HIGH.
RomanBÚčastníkTak pro GND využij ochranný zelenožlutý vodič PE a máš k dispozici všech 5 vodičů pro ventily.
RomanBÚčastníkAhoj
#include <Wire.h>
#include <LiquidCrystal_I2C.h>int tlacitko = 9; //tlacitko na pinu 9
boolean tlacitkostav = 0;
boolean lcdstav = 0;LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.begin();
lcd.backlight();
pinMode(tlacitko, INPUT_PULLUP); //zvedame vnitrnim odporem pin 9 do stavu HIGH
lcd.print(„text prvni“);
}void loop()
{if (digitalRead( tlacitko ) == LOW & tlacitkostav == 0 ) { //tlacitkem spiname GND
if ( lcdstav == 1 ) { lcd.clear(); lcd.print(„text prvni“); }
if ( lcdstav == 0 ) { lcd.clear(); lcd.print(„text druhy“); }
tlacitkostav = 1; lcdstav = !lcdstav; } // lcdstav negujeme
if (digitalRead( tlacitko ) == HIGH & tlacitkostav == 1 ) { tlacitkostav = 0; }
delay(200); //osetreni zakmitu tlacitka
}
RomanBÚčastníkPodporuje ti tablet USB OTG?
RomanBÚčastníkAhoj, nemáš náhodou v lcd.begin(20, 4) nastavenou (2, 4)?
RomanBÚčastníkAhoj, nepotřebuješ aplikaci, váhu si můžeš zobrazit (byť v jednoduché formě) v internetovém prohlížeči viz http://www.arduino8.cz/hrajeme-si-wemos-d1-web-server/ Telefon jistě budeš mít na společném Wifi routeru, tak není co řešit.
RomanBÚčastníkKdyby vše fungovalo napoprvé, nemělo by bastlení smysl 🙂 A proto přeji mnoho úspěchů v projektu Arduino.
RomanBÚčastníkMáš zapojený potenciometr? Slouží k řízení kontrastu a pokud ano, otáčel jsi s ním?
RomanBÚčastníkJeště vyzkoušej test pinů 10-13 jestli jsou OK. Viz https://bastlirna.hwkitchen.cz/i-zaklady-2-bliknuti-led/ s tím, že ti bude stačit ta jedna LEDka a ty ji jenom přepojíš na další piny. A pin 12 bych ještě otestoval jako vstup. Pokud bude vše OK, tak to vypadá na mrtvou čtečku.
/*
Blikání
LED na sekundu zasvítí a pak zase na sekundu zhasne. Opakovaně.
*/// Pin 13 je na většině Arduino deskách spojen s LED
int led1 = 10;
int led2 = 11;
int led3 = 12;
int led4 = 13;void setup() {
// nastavení pinu na Output
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}// opakujici se smyčka
void loop() {
digitalWrite(led1, HIGH); //zapnutí led
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);delay(1000); // po dobu jedné sekundy
digitalWrite(led1, LOW); // vypnuti LED
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);delay(1000); // po dobu jedné sekundy
}RomanBÚčastníkJá vlastním Ethernet s SD a tam je použit pin 4. U tebe samozřejmě je možnost volby zapíchnutím drátku. Vyzkoušej také skeč z Arduina IDE, je tam v příkladěch pod SD. Je to vlastně to stejné jako ty zde cituješ, ale akorát je to počeštěno. Jediné co je špatně je:
// nastavte správně
// Arduino Ethernet shield: pin 4 – náš případ
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = SS;Má být const int chipSelect = 4; nebo jiný tebou použitý pin.
Zároveň zachovej a definuj tento pin v setupu
Serial.print(“\nInicializace SD karty…”);
pinMode(4, OUTPUT);A jaké používáš napětí? 5V nebo 3,3V
RomanBÚčastníkTaké zdravím, jakou máš desku se čtečkou a použil jsi jenom program pro komunikaci s SD kartou?
RomanBÚčastníkint latchPin = 4; int clockPin = 5; int dataPin = 6; int vstup = 7; //pridal jsem si vstup jako podminku int index=0; byte data[] = { B10000000, B11000000, B11100000, B11110000, B11111000, B11111100, B11111110, B11111111, }; byte data2[1] = { B11111111, }; unsigned long staryMillis = 0; const long interval = 800; unsigned long novyMillis = millis(); void setup() { Serial.begin(9600); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(vstup, INPUT_PULLUP); } void loop() { boolean podminka = digitalRead(vstup); //********************************************************************** unsigned long novyMillis = millis(); if (novyMillis - staryMillis >= interval && podminka==0) { staryMillis = novyMillis; digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, data[index]); if (index > 6) { shiftOut(dataPin, clockPin, MSBFIRST, data[7]); index = 7; } digitalWrite(latchPin, HIGH); Serial.println(index); //Serial.println(staryMillis); //Serial.println(novyMillis); index=index+1; } //********************************************************************** if (novyMillis - staryMillis >= interval && podminka==1) { staryMillis = novyMillis; index = 0; digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, data2[index]); Serial.println(index); //Serial.println(staryMillis); //Serial.println(novyMillis); } //********************************************************************** }//konec smycky
Vyzkoušej toto. Jako podmínku jsem použil tlačítko: 0 je stlačeno.
RomanBÚčastníkFunkce delay(200) tam je proto, protože void loop() je stále se opakující smyčka. Když se postupně rozsvítí všechny ledky, pak se čeká 200 ms a ledky se začnou znova rozsvěcet. Vůbec tam nemusí být.
Pro podmínku použij if (podminka==1 && index<7){a tady dej rutinu pro zobrazení}
else (podminka==0) {rutina pro zobrazení,ale s data2[1]
=B00000000 aby ti to zhaslo}RomanBÚčastníkVýstupy z HX711 sice jdou na piny UNA A0 A1, ale komunikace je binární. V kódu nikde nenalezneš funkci AnalogRead()…
RomanBÚčastníkZdravím, vymaž si ze složky libraries všechno okolo Robot…. Obsahují totiž nějaké IR knihovny a Arduino si je při kompilaci natahuje a pak to vypisuje chyby.
My Arduino ver. IDE is 1.0.6
RomanBÚčastníkZdravím, IP adresa se musí zadat tak trochu jinak, než je napsaná v tutoriálu. Pokud je Ethernet shield zapojen přes UTP kabel do WiFi routeru a router je nakonfigurován tak, aby DHCP přiděloval IP, potom si zjisti rozsah přidělovaných adres a nějakou tu adresu do nastavení vepiš.
Třeba u mě to je IPAddress ip(192,168,0,111);
Potom bych ještě zapsal v setupu Ethernet.begin(mac, ip); -
AutorPříspěvky