Keresés

Részletes keresés

Törölt nick Creative Commons License 2017.12.27 0 0 3297

Ez alapján mennie kell:

[code]
#include <DS3231.h>

int Relay0 = 4;
int Relay1 = 5;
int Relay2 = 6;
int Relay3 = 13;

DS3231 rtc(SDA, SCL);
Time t;

const int OnHour0 = 12;
const int OnMin0 = 24;
const int OffHour0 = 12;
const int OffMin0 = 25;
const int OnHour1 = 12;
const int OnMin1 = 26;
const int OffHour1 = 12;
const int OffMin1 = 27;

void setup() {
Serial.begin(115200);
rtc.begin();
pinMode(Relay0, OUTPUT);
digitalWrite(Relay0, LOW);
pinMode(Relay1, OUTPUT);
digitalWrite(Relay1, LOW);
pinMode(Relay2, OUTPUT);
digitalWrite(Relay2, LOW);
pinMode(Relay3, OUTPUT);
digitalWrite(Relay3, LOW);
}

void loop() {
t = rtc.getTime();
Serial.print(t.hour);
Serial.print(" hour(s), ");
Serial.print(t.min);
Serial.print(" minute(s)");
Serial.println(" ");
delay (1000);

if(t.hour == OnHour0 && t.min == OnMin0){
digitalWrite(Relay0,HIGH);
Serial.println("LIGHT ON");
}

else if(t.hour == OffHour0 && t.min == OffMin0){
digitalWrite(Relay0,LOW);
Serial.println("LIGHT OFF");
}
if(t.hour == OnHour1 && t.min == OnMin1){
digitalWrite(Relay1,HIGH);
Serial.println("LIGHT ON");
}

else if(t.hour == OffHour1 && t.min == OffMin1){
digitalWrite(Relay1,LOW);
Serial.println("LIGHT OFF");
}
}
[/code]

Előzmény: tomi8822 (3296)
tomi8822 Creative Commons License 2017.12.27 0 0 3296

Üdv, úgy kellene kapcsolnom a reléket hogy pl az egyes relé bekapcsol 12:10-kor és ki kapcsol 18:10-kor.

A kettes relé bekapcsol pl 10:10 kor és kikapcsol 20:10-kor, és így tovább ahogy a példa programban is van.

Előzmény: Törölt nick (3295)
Törölt nick Creative Commons License 2017.12.27 0 0 3295

// relay8_Demo
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// A quick demo of most of the library functions.
//

// Include our library :)
#include <relay8.h>

// Declare what pins our relays are connected to.
// relay8 supports from 1 to 8 relays.
relay8 relay(2, 3, 4, 5, 6, 7, 8, 9);

void setup()
{
// Nothing special is needed here
}

void loop()
{
// Switch the first relay on and off a couple of times
for (int t=0; t<3; t++)
{
relay.on(1);
delay(500);
relay.off(1);
delay(500);
}

// Switch the last relay on and off a couple of times
for (int t=0; t<3; t++)
{
relay.on(relay.numberOfRelays());
delay(500);
relay.off(relay.numberOfRelays());
delay(500);
}

// Switch all relays on and off a couple of times
for (int t=0; t<3; t++)
{
relay.allOn();
delay(500);
relay.allOff();
delay(500);
}

// Cycle through all relays slowly from the first to the last
// then a little faster back down again
for (int t=0; t<3; t++)
{
relay.cycleUp();
relay.cycleDown(100);
}

// Switch on all relays in sequence then switch then all off
// again a little faster
for (int t=0; t<3; t++)
{
relay.chaseUpOn(500);
relay.chaseUpOff();
}

// Switch on all relays in sequence then switch then all off
// again a little faster. This time in the opposite direction
for (int t=0; t<3; t++)
{
relay.chaseDownOn();
relay.chaseDownOff(100);
}
}

Előzmény: tomi8822 (3294)
tomi8822 Creative Commons License 2017.12.27 0 0 3294

Üdv, köszönöm a segítséget, de úgy szeretném megoldani hogy mind a 6db relé külön adott időben be és ki kapcsolni ahogy a példa programban is van 1db relével.

Esetleg tudsz abban még segíteni hogy ez hogy nézne ki kész program formájában?

Előzmény: Törölt nick (3293)
Törölt nick Creative Commons License 2017.12.27 0 0 3293

int lightRelay1 = 2;

int lightRelay2 = 3;

int lightRelay3 = 4;

int lightRelay4 = 5;

int lightRelay5 = 6;

int lightRelay6 = 7;

 

vagy az általad választott digitális kimenet, minden reléhez külön.

Előzmény: tomi8822 (3292)
tomi8822 Creative Commons License 2017.12.26 0 0 3292

Üdv, valaki tudna segíteni nekem?
Ezt a programot szeretném használni de úgy hogy 6 db relét tudjak egyesével időre kapcsolni, lényegében 6 relére kéne kibővíteni. Eggyel működik gond nélkül.

// Date and time functions using a DS3231 RTC connected via I2C and Wire Lib

#include <Wire.h>
#include <RTClib.h>
#include <Time.h>
#include <TimeAlarms.h>

RTC_DS1307 RTC;

// Start Time
int sHour = 11;
int sMinute =30;
int sSecond = 0;

// End Time
int eHour = 11;
int eMinute = 30;
int eSecond = 4;

int lightRelay = 2;

void setup() {
// Set the relay to off immediately
digitalWrite(lightRelay, HIGH);

Serial.begin(9600);
Wire.begin();
RTC.begin();

// Set the pinmode
pinMode(lightRelay, OUTPUT);

// Notify if the RTC isn't running
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running");
}

// Get time from RTC
DateTime current = RTC.now();
DateTime compiled = DateTime(__DATE__, __TIME__);
if (current.unixtime() < compiled.unixtime()) {
Serial.println("RTC is older than compile time! Updating");
RTC.adjust(DateTime(__DATE__, __TIME__));
}

// Use RTC time to set the start time
setTime(sHour, sMinute, sSecond, current.day(), current.month(), current.year());
time_t s = now();

// Use RTC time to set the end time
setTime(eHour, eMinute, eSecond, current.day(), current.month(), current.year());
time_t e = now();

// Use RTC time to set the current time
setTime(current.hour(), current.minute(), current.second(), current.day(), current.month(), current.year());
time_t n = now();

// Test if grow light should be on
if (s <= n && n <= e) {
digitalWrite(lightRelay, LOW); // Sets the grow light "on"
}

Alarm.alarmRepeat(sHour, sMinute, sSecond, LightOn);
Alarm.alarmRepeat(eHour, eMinute, eSecond, LightOff);
}

void loop() {
DateTime now = RTC.now();
setTime(now.hour(), now.minute(), now.second(), now.day(), now.month(), now.year());

Serial.print("Current time: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

Serial.println();
Alarm.delay(1000);
}

void LightOn() {
Serial.println("Turning Light On");
digitalWrite(lightRelay, LOW);
}

void LightOff() {
Serial.println("Turning Light Off");
digitalWrite(lightRelay, HIGH);
}

gamb1t Creative Commons License 2017.12.22 0 0 3291

Köszönöm a válaszát, a switch-case ügyet vmi kiguglizott fórumon olvastam , hogy jelen esetben vmi konstans hibára hivatkozik

Előzmény: Vargham (3290)
Vargham Creative Commons License 2017.12.22 0 0 3290

else if (1<kaka<2){

Warning comparisons like 'X<=Y<=Z' do not have their mathematical meaning

Tehát ez neked hülyeség, hiába helyes C programkód.

Ezt jelenti: Először kiértékeli ezt: 1 < kaka, ennek az eredménye egy bool lesz (true vagy false). Utána pedig megvizsgálja, hogy a kapott bool kisebb-e, mint 2, ami definíció szerint mindig true.

Helyette ez az alak használatos:

else if (1 < kaka && kaka < 2) {

De szép változóneved van...

> Mivel a switch-case-t egyáltalán nem tudtam működésre bírni (ahogy olvastam nem igazán működik az arduinon)

Pedig működik. Hol olvastál ilyet?

Előzmény: gamb1t (3288)
gamb1t Creative Commons License 2017.12.22 0 0 3289

Az előzőhöz nem mentek fel a képek, itt egy h mégis h néz ki a dolog...

gamb1t Creative Commons License 2017.12.22 0 0 3288

sziasztok


első project, egy plotterről leolvasott értéket duplázva (0-10) szeretném megoldani, h az 5 ledem közül felvillanjon az értéknek megfelelő számú (0-2-ig 1, 2-4-ig 2 stb..), és az érték(kerekítvenyilván) megjelenjen egy 7szegmensű kijelzőn. Ennek ugye egyszerű az emélete, mégsem jön össze. Külön külön minden tökéletesen működik, de nem tudom összehozni az egészet egyszerre. Nem a hivatalos arduino-m van, hanem vmi copy (ebayen az első ha rákeresel h arduino uno).

 

Mivel a switch-case-t egyáltalán nem tudtam működésre bírni (ahogy olvastam nem igazán működik az arduinon), elkezdtem az if-eket. 0 és 1 tökéletesen működik, prímán meg is jelenik a kis kijelzőn, ég a megfelelő LED, alles gut, but onnantól az istenért se menne tovább. A kód külön működik, de valamiért nem akar a program belépni oda ahová kellene...

 

int pinA = 6;
int pinB = 5;
int pinC = 2;
int pinD = 3;
int pinE = 4;
int pinF = 7;
int pinG = 8;

 

void setup() {
//serialmonitor
Serial.begin(9600);

//7segment
pinMode ( pinA, OUTPUT);
pinMode ( pinB, OUTPUT);
pinMode ( pinC, OUTPUT);
pinMode ( pinD, OUTPUT);
pinMode ( pinE, OUTPUT);
pinMode ( pinF, OUTPUT);
pinMode ( pinG, OUTPUT);

//LEDs
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
}

void loop() {

int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
float kaka = voltage*2;
Serial.println(kaka);


if (kaka<1) {
digitalWrite (pinA, HIGH);
digitalWrite (pinB, HIGH);
digitalWrite (pinC, HIGH);
digitalWrite (pinD, HIGH);
digitalWrite (pinE, HIGH);
digitalWrite (pinF, HIGH);
digitalWrite (pinG, LOW);
digitalWrite (9, HIGH);}
else if (1<kaka<2){
digitalWrite (pinA, LOW);
digitalWrite (pinB, HIGH);
digitalWrite (pinC, HIGH);
digitalWrite (pinD, LOW);
digitalWrite (pinE, LOW);
digitalWrite (pinF, LOW);
digitalWrite (pinG, LOW);
digitalWrite (9, HIGH);}
else if (2<kaka<3){
digitalWrite (pinA, HIGH);
digitalWrite (pinB, HIGH);
digitalWrite (pinC, LOW);
digitalWrite (pinD, HIGH);
digitalWrite (pinE, HIGH);
digitalWrite (pinF, LOW);
digitalWrite (pinG, HIGH);
digitalWrite (9, HIGH);
digitalWrite (10, HIGH);}
}

 

 

Ha az "else if (2<kaka<3)"-at átírom sima "if (2<kaka<3)"-ra akkor abba lép be, megjelenik a 2-es a kijelnzőn és ég a 2 led az értéktől függetlenül. A képen látjátok h jól működik a plotter, ha a fent leírt kód fut akkor 0 és 1 között tud váltani, aztán nemtom, elfogy a tudomány ha tovább kéne állni. A programozás terén IS kezdő vagyok de azért szerintem itt nem ejtettem olyan nagy hibát. 

 

Mit csinálok rosszul ? Előre is köszi (L)

ui.: kusza a kapcsolás, de külön letesztelve minden működik...

 

Krommer84 Creative Commons License 2017.12.22 0 0 3287

Sziasztok kezdőként vettem egy Arduino r3-at és szeretnék egy léptetőmotor vezérlő projektet az alábbi link alapján:

https://hobbielektronikabolt.blogspot.hu/2017/11/lepteto-motor-vezerlese-uln2003.html

 

elvileg mindent megcsináltam, de hiba üzentet kapok.

 

Beállításaim:

 

http://i63.tinypic.com/30tgdud.jpg

 

Hiba üzenet:

 

Arduino: 1.6.10 (Linux), Board: "Arduino Uno"

WARNING: Category '' in library EEPROM is not valid. Setting to 'Uncategorized'
WARNING: Category '' in library SPI is not valid. Setting to 'Uncategorized'
WARNING: Category '' in library SoftwareSerial is not valid. Setting to 'Uncategorized'
WARNING: Category '' in library Wire is not valid. Setting to 'Uncategorized'
Warning: platform.txt from core 'Arduino AVR Boards' contains deprecated recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}", automatically converted to recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}". Consider upgrading this core.
signal: bad system call (core dumped)
Error compiling for board Arduino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

 

 

Kérem valaki világosítson fel mit csinálok rosszul?

Tomiali Creative Commons License 2017.12.19 0 0 3286

Sziasztok. Használja itt valaki a virtuinot? 

ruzsa janos Creative Commons License 2017.12.17 0 0 3285

van egy bitburner program, ami a mndenki által használt avrdude dos-os programot használva nagyon kellemes grafikus felületen működik. töltsd le.

nekem egy USBtiny klón ISP programozóm van, azzal működik. 

mondjuk azért tanultam meg bootloadert feltenni, mert ezzel az ISP programozóval sikerült törölnöm az eredetit :)

(én csak az olvasásvédő "fuse"-okat akartam átbillenteni. hát nem elsőre sikerült)

 

Előzmény: gyerek67 (3283)
gyerek67 Creative Commons License 2017.12.17 0 0 3284

Átmértük az USB csatit, szépen átmegy a CH340-re.

Előzmény: gyerek67 (3283)
gyerek67 Creative Commons License 2017.12.17 0 0 3283

Köszi a válaszodat!

Szép fényesnek, egészségeseknek tűnnek az USB csati forrasztások, de mindjárt kimérem őket.

Ezt a bootloader dolgot hogyan kellene csinálnom?

Van itthon egy CP2102-es adapterem itthon. Az való a feladathoz?

 

Üdv: Viktor

Előzmény: ruzsa janos (3282)
ruzsa janos Creative Commons License 2017.12.17 0 0 3282

vagy leszakaft az usb csatlakozo, olyanom mar volt.

ha bootloader, akkor az ISP porton tudpod ratolteni.

de eloszor multimeterrel az usb, szerintem

Előzmény: gyerek67 (3281)
gyerek67 Creative Commons License 2017.12.17 0 0 3281

Szervusztok, segítséget kérnék!

 

A fiam vásárolt kéz alatt egy használt Arduino Nano-t.

Az eszköz jelenleg nem kommunikál USB-n a legfrissebb gyári programozó szoftverrel.

A CH340 driver jó, mert simán beszélgetek rajta keresztül egy ESP-8266 Wemos D1-el.

Az eladó elmondása szerint eddig valamilyen más módon, Linux alatt használták.

A jószág vélhetően jó, mert a LED BLINK program, amit beletöltöttek, remekül működik, miután tápot kap.

Mit kellene tennem? Valahogyan másik bootloadert tölteni bele, hogy USB-n keresztül elérjem?

Sajnos Arduinoban semmilyen tapasztatom nincsen, most találkoztam vele először.

 

Üdv:

Viktor

 

ruzsa janos Creative Commons License 2017.12.16 0 0 3280

szerintem először határozd meg, mennyi a motor elérhető maximális és még használható minimális sebessége. ezt a "tartományt" osszad fel mondjuk 4 részre, ez lesz a 4 használandó sebesség.

a motor elindulási irányán nem értem mi a probléma, hát vagy közeleíteni akarsz, vagy távolítani, nem?

az aktuális és a célpozíció függvényében kellene eldöntenie a programnak, hoy max sebességgel indul, vagy a többi 3 lépcső valamelyikével. Ha kicsi a távlság, akkor a legkisebbel, másként túlmegy rajta. Ahogy közeledik, csökkented a sebességet. Az ultrahangos távolságmérőnek van egy mérési időtartama - vagyis a távolságot legfeljebb ilyen időközönként tudod meghatározni. Ha az aktuális pozíció mínusz a célpozíció közötti táv kisebb, mint amit a motor két távmérés alatt megtesz, akkor a motor működtetési idejét már a táv/sebesség alapján kell számolnod. 

A legfontosabb szerintem: a célpozícióra állásnak kell legyen egy megengedett pontatlansága, vagyis ha ezen belül vagy, akkor le kell állni a beállásnak, másként a végtelenségig rángatja majd előre-hátra.   

Előzmény: ngyzsolt (3279)
ngyzsolt Creative Commons License 2017.12.16 0 0 3279

Üdv!

 

Egy szintezőt szeretnék építeni. Ez tulajdonképpen egy makett lenne. A szenzor alatt lévő objektumhoz képes igazítaná a felfüggesztett fém lemezt, aminek a két végén helyezkednek el a szenzorok(HC-SR04 ultrahangos távolságmérő). A szintezést egy 12 voltos dc motor végezné, aminek a fordulatszámát áttétellel is lassítottam. Ezt a motort egy L298N vezérlő irányítaná. 

A programozással akadtak problémáim. Az lenne a kérdésem, hogy hogyan lehetne megoldani azt, hogy a motor mindig a megfelelő irányban, csak a szükséges mértékig állítson és ez az állítás mindig a lehető leggyorsabban történjen.

Vargham Creative Commons License 2017.12.13 0 0 3278

Ezek a linkek miért mennek keresztül a fészbúkon?

Előzmény: sfveteran (3277)
sfveteran Creative Commons License 2017.12.13 0 0 3277

Üdv!

 

Építenék egy TZXDuino-t (https://github.com/sadken/TZXDuino).
Kijelző, SD kártya olvasó már csatlakoztatva. A kártya olvasó nem érzékeli a kártyát. Egy 256 MB-os régi Nokia microSD kártyáról van szó. Minden vezeték a megfelelő helyen van, nincs kontakt hiba. Kipróbáltam az arduino fejlesztő rendszer Libraries/SD/examples/ mappában található Cardinfo programot is, ami a következő hibát dobja soros monitoron:

"Initializing SD card...Wiring is correct and a card is present.

Card type: SD1
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card"

Formáztam FAT16-ra, FAT32-re, letöltöttem az SDcard.org oldalról az SD kártya formázó proggit, de semmi.

1.8.5.-ös az arduino fejlesztőrendszer, az SD library 1.2.1-es, az USB-n keresztül 4.9V-ot kap a panel.

Megnéztem ezt is SDFat lib-et: https://github.com/greiman/SdFat

Itt van egy SDinfo nevű arduino program. Egy 4Gb-os kártyára ezt adja:
Egy másik, 4 GB-os kártyára ezt adja az SDinfo:

 

init time: 365 ms

Card type: SDHC

Manufacturer ID: 0X27
OEM ID: PH
Product: SD04G
Version: 3.0
Serial number: 0X3D78EDDA
Manufacturing date: 8/2010

cardSize: 3980.39 MB (MB = 1,000,000 bytes)
flashEraseSize: 128 blocks
eraseSingleBlock: true
OCR: 0XC0FF8000

SD Partition Table
part,boot,type,start,length
1,0X0,0XB,8192,7766016
2,0X0,0X0,0,0
3,0X0,0X0,0,0
4,0X0,0X0,0,0
error:
File System initialization failed.

SD errorCode: 0X30,0X4F

Másik, 8 GB-os kártyára is ugyanezt a hibát dobja. Mi lehet a hiba?

 

Prof Creative Commons License 2017.12.12 0 0 3276

+ Arduino környezetben a honlapon van kissé alapabb a "library"-k (könyvtárak) használatáról.

Mindenképp jó irány. A sok void (ami nem feltétlen void) első lépésnek nem rossz, de a könyvtárak használata mindenképp célravezetőbb (és elegánsabb is).

Előzmény: Vargham (3273)
barkócza Creative Commons License 2017.12.12 0 0 3275

Keress rá a neten a "moduláris programozás C nyelven" kifejezésre. Ezért van külön lépésben a fordítás és a linkelés, és erre valók a header (.h) fájlok. (Pascalban a unit csinálja ugyanezt.)

Előzmény: Brandyman (3271)
digium Creative Commons License 2017.12.12 0 0 3274

Félreértettem, mert először adat file olvasásról volt szó. Azt hittem, magát a programot akarja külső fájlból olvasni/futtatni...

Előzmény: Vargham (3272)
Vargham Creative Commons License 2017.12.12 0 0 3273

Ezek szerint egyszerűen csak hozzak létre egy fájl-t, mozgassam bele amit külön szeretnék, és include?

Igen.

Esetleg olvass még utána:

https://www.tutorialspoint.com/cprogramming/c_header_files.htm

Előzmény: Brandyman (3271)
Vargham Creative Commons License 2017.12.12 0 1 3272

Szerintem nincs ilyen. Ebben a cpu-ban nincs MMU, ami ezt menedzselni tudná.

Ezt honnan vetted?

A forrásfájlok szerekezetének SEMMI köze az MMU-hoz.

Előzmény: digium (3267)
Brandyman Creative Commons License 2017.12.11 0 0 3271

NIncs bajom az include-al, csak nem tudom, hogy mennyire lehet saját célra használni ilyet. 

 

Ezek szerint egyszerűen csak hozzak létre egy fájl-t, mozgassam bele amit külön szeretnék, és include? 

Ez annyira egyszerűnek tűnik, hogy elnézést kell kérjek a láma kérdésért :-) 

 

Kipróbálom. 

 

Köszönöm! 

Előzmény: digium (3270)
digium Creative Commons License 2017.12.11 0 0 3270

Jah értem, csak összefésültem a file olvasással kapcsolatos problémáddal. Tehát csak a forrást szeretnéd külön szerkeszteni. Mi a bajod az include-al?

Előzmény: Brandyman (3268)
tibi-d Creative Commons License 2017.12.11 0 0 3269

Szia!

Én ezt úgy oldottam meg. hogy több void()-ra osztottam fel az elvégzendő feladatot. A Loop-ban sorra meghívom őket, mintha egymás után következnének. Így egy részfeladat 1-2 oldalnál nem hosszabb. Az egyes Void().kat külön lapon szerkesztem. Az IDE jobb felső sarkában lehet új lapot kérni.

Előzmény: Brandyman (3268)
Brandyman Creative Commons License 2017.12.11 0 0 3268

Nem kimondottan a CPU-ra gondoltam, hanem magára a szerkesztésre. 

Mint ahogy #include-al hozzáadsz a programodhoz olyan tartalmat, ami egy másik fájlban van leírva. 

példa;  RTC.getHour();

EZ a parancs külső fájlban van, mint ahogy az is, hogy mit kell csinálnia a CPU-nak ehhez. 

Csak én a saját dolgaimat szeretném külön fájlba pakolni, hogy kevesebb legyen ott, ahol dolgozom. 

 

Előzmény: digium (3267)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!