Keresés

Részletes keresés

leveste Creative Commons License 2016.01.01 0 0 1514

Sziasztok!

Max6675-el építettem egy egyszerű kapcsolást.

A kimenet 20 Hz pwm

A kitöltési tényezőt delay után írt értékekkel állítgatom.

Csakhogy a Max kiolvasása után szükséges beírni delay 200-t, különben a ciklus alatt nem olvassa ki  a hőmérsékleti értéket.

Ezzel a be nem kalkulált időzítéssel sikeresen el is cseszem a pwm-t 

 

Az első lefutáskor beolvassa a "homers" ertéket, de többször nem.

Mit rontottam el?

 

// this example is public domain. enjoy!
// www.ladyada.net/learn/sensors/thermocouple

#include <max6675.h>
#include <Wire.h>

int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
int homers;
int a = 0 ;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;


void setup() {
Serial.begin(9600);
// use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode( 7 , OUTPUT);

 

// wait for MAX chip to stabilize
delay(500);
}

void loop() {

homers = thermocouple.readCelsius();
delay (200);

DkGrinder Creative Commons License 2016.01.01 0 0 1513

Kipróbálom, köszönöm !

Előzmény: titusz99 (1510)
Prof Creative Commons License 2016.01.01 0 0 1512

Szedd le, rakd fel újra a hivatalos eljárás szerint.

Arduino IDE kompatibilitást ellenőrizd (sok könyvtárral oda-vissza lehetnek már bajok).

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

Sziasztok!

 

Először is Boldog Új Évet mindenkinek!

 

Van egy kis problémám a HID könyvtárral.

Feltettem, de amikor a programba akarom berakni, csak egy üres sort tesz be, és mintha ott se lenne, pedig a könytárban ott van.

Ezzel a könyvtárral van valakinek tapasztalata? vusb-for-arduino-005

 

Köszi előre is a segítséget,

Bagesz

titusz99 Creative Commons License 2015.12.31 0 0 1510

Próbáld így:

 

int soros = 207;

void setup() {
Serial1.begin(9600);
Serial.begin(9600); // Serial port beállítás

pinMode(10, INPUT_PULLUP); // 10 PIN bemenet belső elleneállasl felhúzva
pinMode(11, OUTPUT); // RS 485 engedély Adás
digitalWrite(11, LOW);
pinMode(12, OUTPUT); // RS 485 engedély Vétel
digitalWrite(12, LOW);   // HIGH);
pinMode(13, OUTPUT);

}


void loop() {

if (digitalRead(10) == LOW) // ha A nyomógomb értéke alacsony akkor
{
digitalWrite(13, HIGH); // a LED kimenet magas, LED ON
digitalWrite(11, HIGH);
delay(100);
Serial1.print(soros,HEX);
Serial1.print(255,HEX);
Serial1.print("rn");
delay(100);
digitalWrite(11, LOW);
delay(100);

}
if (digitalRead(10) == HIGH) //ha B nyomógomb értéke alacsony akkor
{
digitalWrite(13, LOW); // a LED kimenet is alacsony, LED OFF

}
}

Előzmény: DkGrinder (1508)
titusz99 Creative Commons License 2015.12.31 0 0 1509

Rosszul állítod az engedélyező bemeneteket.

Buszról olvasás lehet folyamatosan engedélyezett.

Ezen kívül az adás és vétel engedélyezések ellen-ütemben működnek.

Előzmény: DkGrinder (1508)
DkGrinder Creative Commons License 2015.12.31 0 0 1508

Összekötöttem az fentiek szerinti kapcsolást, a MAX485 összekötöttem egy Loxone épületfelügyelet RS485 átjárójával. 

Nem találtam pontos leírás és nagyon kezdő arduino-s vagyok, de ha a lenti kis progival "írok a buszra"a Loxone monitorban megjelenik , viszont a többi rs485-ös eszköz nem működik amíg a max485 a buszon van.

Van valami ötletetek miért?

 


int soros = 207;

void setup() {
Serial1.begin(9600);
Serial.begin(9600); // Serial port beállítás

pinMode(10, INPUT_PULLUP); // 10 PIN bemenet belső elleneállasl felhúzva
pinMode(11, OUTPUT); // RS 485 engedély
pinMode(12, OUTPUT); // RS 485 engedély
pinMode(13, OUTPUT);

}


void loop() {

digitalWrite(11, HIGH);
digitalWrite(12, HIGH);

if (digitalRead(10) == LOW) // ha A nyomógomb értéke alacsony akkor
{
digitalWrite(13, HIGH); // a LED kimenet magas, LED ON
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
delay(100);
Serial1.print(soros,HEX);
Serial1.print(255,HEX);
Serial1.print("rn");
delay(100);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(100);

}
if (digitalRead(10) == HIGH) //ha B nyomógomb értéke alacsony akkor
{
digitalWrite(13, LOW); // a LED kimenet is alacsony, LED OFF

}

}

titusz99 Creative Commons License 2015.12.30 0 0 1507

Azért nem semmi, hogy az optiboot csak 0,5k-s. Így felszabadul 1,5k flash.

 

Előzmény: titusz99 (1506)
titusz99 Creative Commons License 2015.12.30 0 0 1506

Nézd meg a bootloader-ek forrását - wdt- re kell keresni.

Ami a biteket illeti máshol kell beállítani.

Benne volt a linkelt anyagban.

 

ATmegaBOOT_168.c:

 

int main(void)
{
    uint8_t ch,ch2;
    uint16_t w;

#ifdef WATCHDOG_MODS //<- Ez nincs definiálva
    ch = MCUSR;
    MCUSR = 0;

    WDTCSR |= _BV(WDCE) | _BV(WDE);
    WDTCSR = 0;

    // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
    if (! (ch &  _BV(EXTRF))) // if its a not an external reset...
        app_start();  // skip bootloader
#else
    asm volatile("nopnt");
#endif

Előzmény: szatti (1505)
szatti Creative Commons License 2015.12.30 0 0 1505

Hol van ez a kapcsoló?

Nincs véletlenül ott egy olyan kapcsoló is ami a code protectet kapcsolja be?

Előzmény: titusz99 (1497)
Törölt nick Creative Commons License 2015.12.30 0 0 1504

Befejeztem egyelőre a kisérletezést, rendeltem még 2 db nanot.

Kiszedtem a fűtésvezérlőből egy nanot, nem működik az usb csatlakozása.

ICSP csatlakozással összekötöttem a tartalék nanoval, azt előtte felprogramoztam ArduinoISP-nek IDE 1.6.7-el, arról simán működik a bootloader feltöltése.

A wdt funkciót így nem tudtam tesztelni.

Előzmény: szatti (1503)
szatti Creative Commons License 2015.12.30 0 0 1503

Van egy Megám is. Most próbáltam ki a Watchdogot. Persze ezen sem működik!

Előzmény: Törölt nick (1494)
szatti Creative Commons License 2015.12.30 0 0 1502

Vicces ez a számítástechnika.

 

A programom 1 hónapig működik hibátlanul, majd egyszercsak nem.

Átírtam a részt ahol megakadt, most működik.

Nem értem az okát. A kritikus programrészlet:

 

// send data length
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
ser.println(cmd);

if(ser.find(">")){
ser.print(getStr);
}
else{
ser.println("AT+CIPCLOSE");
// alert user
Serial.println("AT+CIPCLOSE1");
}

}
return;
}

 

Itt ugye if után várja a >  karaktert ami meg is érkezik, csak éppen nem fogja fel csupán 30-40 alkalomból egyszer.

Kihagyva az if-et és társait, csak simán küldöm az adatokat, így működik.

Ezt soha nem fogom megérteni, főleg, hogy egy hónapig így működött stabilan.

szatti Creative Commons License 2015.12.29 0 0 1501

Véletlenül kifoghatsz olyat is :-)

Cseréld le a bootloadert és nem kell rendelni!

Előzmény: Törölt nick (1494)
titusz99 Creative Commons License 2015.12.29 0 0 1500

Én direktbe programozom Arduino IDE-ből.

Egyenlőre a minta:

Nano küld serial-on adatokat ESP-nek serial-ra.

Ezt továbbítja serial1-en az ESP számítógépnek (innen kap mindenki tápot).

Aki meg becsatlakozik telnettel az is látja.

Sajna még gyatra a térerő, így még nem megy élesben.

Teszten kommunikáció megy, ESP vekkere NTP-n szinkronizálva.

Telnet kapcsolat él.

Tetszik, hogy van bőven erőforrása.

 

Előzmény: szatti (1498)
szatti Creative Commons License 2015.12.29 0 0 1499

Nem értem mi történhetett az ESP8266-os logolásommal.

Lassan egy hónapja ment hibátlanul. Ma miután visszakapcsoltam egy bootloader cserés Nanoval, teljesen rendszertelenül

küld adatokat. Va amikor 10 perc de van amikor 40 perc a szünet.

A régi Nanot visszarakva sem változott a helyzet, így nem a bootloader az oka.

szatti Creative Commons License 2015.12.29 0 0 1498

Na akkor kíváncsian várom a fejleményeket.

Én ma egész délután ESP8266-al küzdök.

 

Van 2db amivel tudok csatlakozni. Ezeket vettem régebben.

Válaszol az AT parancsokra., Listázza amit lát és felmegy a routerre.

 

Ugyanott vettem még 5db-ot.

AT-re OK-ot ad.

A reset és a firmware parancsot még válaszolja, de az AT+CWLAP  már error-t ad.

A firmware frissebb ezeken, de nem tudom így használni.

 

Ez működik:

 

AT+GMR
AT version:0.25.0.0(Jun 5 2015 16:27:16)
SDK version:1.1.1
Ai-Thinker Technology Co. Ltd.
Jun 23 2015 23:23:50

 

Ez nem:

 

ready
AT+GMR
AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK
AT+CWLAP

ERROR

 

 

 

Előzmény: titusz99 (1497)
titusz99 Creative Commons License 2015.12.29 0 0 1497

Ezzel teszteltem a nano-mat. Naná, hogy elszált.

Majd ha odajutok lecserélem én is. Most a ESP8266-ot akarom üzembe állítani.

Egyébként a bootloader-ek forrásában gyönyörűen látszik a hiba.

A sima bootloader esetén egy kapcsolót be kell kapcsolni, hogy jó legyen.

Optiboot-nál alapban be van kapcsolva. Ezért jó.

 

Előzmény: szatti (1493)
Kugynok Creative Commons License 2015.12.29 0 0 1496

Sziasztok!

 

433Mhz RF Transmitter With Receiver Kit For Arduino ARM MCU Wireless

 

Rendeltem belőle kettőt. Az első fogadó panel kimenő adat lábán fix 3.65v mértem. (letudtam azzal, hogy biztos hibásan küldték)

Bekötöttem a második párból való fogadó panelt, az remekül működött kb 2 napig, aztán a kimenő data láb szintén beállt 3.65n-re.

Ezzel kapcsolatban van valakinek tapasztalata?

Használta vagy használja valaki ezt a típust?

 

Köszi!

K.

szatti Creative Commons License 2015.12.29 0 0 1495

Most a Wifi adta meg magát.

 

Azt hittem összefügg a bootloaderrel, de a régivel is rosszalkodik.

 

Nem is értem mi lehet,  mert van itthon 5 db de eddig csak 1-el működött, pedig mind új.

Itt is valami frissítés gond lesz szerintem. Sajnos az USB soros adapter még nem érkezett meg, hogy tudjam

őket programozni.

Törölt nick Creative Commons License 2015.12.29 0 0 1494

Ez már haladás, a kérdés, hogy lehet-e rendelni olyan nanot, amiben működik a wdt.

Előzmény: szatti (1493)
szatti Creative Commons License 2015.12.29 0 0 1493

Ezt a tesztet futtatom és szépen újraindul:

 

 

#include <Arduino.h>
#include <wdt.h>
/*
watchdog timer example code.

flashes LED three times quickly on boot up. Then goes thru a loop delaying
an additional 250ms on each iteration. The LED is on during each delay.
Once the delay is long enough, the WDT will reboot the MCU.
*/

const int onboardLED = 13;

void setup() {

int k;

// immediately disable watchdog timer so set will not get interrupted

wdt_disable();

// I often do serial i/o at startup to allow the user to make config changes of
// various constants. This is often using fgets which will wait for user input.
// any such 'slow' activity needs to be completed before enabling the watchdog timer.

// the following forces a pause before enabling WDT. This gives the IDE a chance to
// call the bootloader in case something dumb happens during development and the WDT
// resets the MCU too quickly. Once the code is solid, remove this.

delay(2L * 1000L);

// enable the watchdog timer. There are a finite number of timeouts allowed (see wdt.h).
// Notes I have seen say it is unwise to go below 250ms as you may get the WDT stuck in a
// loop rebooting.
// The timeouts I'm most likely to use are:
// WDTO_1S
// WDTO_2S
// WDTO_4S
// WDTO_8S

wdt_enable(WDTO_4S);

// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:

pinMode(onboardLED, OUTPUT);

// at bootup, flash LED 3 times quick so I know the reboot has occurred.

for (k = 1; k <= 3; k = k + 1) {
digitalWrite(onboardLED, HIGH);
delay(250L);
digitalWrite(onboardLED, LOW);
delay(250L);
}
// delay a bit more so it is clear we are done with setup
delay(750L);
}

void loop() {

int k;

// this loop simply turns the LED on and then waits k*250ms. As k increases, the amount of time
// increases. Until finally the watch dog timer doesn't get reset quickly enough.
for (k = 1; k<= 10000; k = k + 1) {
// at the top of this infinite loop, reset the watchdog timer
wdt_reset();
digitalWrite(onboardLED, HIGH);
delay(k*250L);
digitalWrite(onboardLED, LOW);
delay(250L);
}
}

szatti Creative Commons License 2015.12.29 0 0 1492

Köszönjük a hasznos linket!!!

 

Égetőm ugyan nincs, de egy másik Nanoval tudtam égetni.

 

Sajnos a halottnak tűnő Nanot ez a bootloader csere sem csinálta írhatóvá.

Azzal még küzdenem kell.

Előzmény: titusz99 (1490)
szatti Creative Commons License 2015.12.29 0 0 1491

Hű srácok, ez működik!!!

Nem fagy a Nano a wdt tesztnél!

 

Igaz fel kellett tennem az 1.0.6-os software-t és nem hozzámásoltam a txt-hez hanem egy az egyben lecseréltem.

A hozzámásolásnál kiírta, hogy nem megfelelő a file és nem tudtam semmit égetni.

 

Most csak optiboot panelek jelennek meg az alappaneleknél, de szépen égeti a Nanot és nem fagy le a kutya!

Előzmény: titusz99 (1490)
titusz99 Creative Commons License 2015.12.28 0 0 1490
Törölt nick Creative Commons License 2015.12.28 0 0 1489

A DUE csatlakoztatásakor az IDE nem fordítja le a reset kódot, a nano csatlakoztatásakor az IDE nem fordítja le a WDT kódot.

Törölt nick Creative Commons License 2015.12.28 0 0 1488

Ez a reset kód, a nanora feltölthető, de lefagyasztja, tehát nem működik a wdt:

 

#include <avr/wdt.h>

void setup() {
wdt_disable(); // бесполезная строка до которой не доходит выполнение при bootloop
Serial.begin(9600);
Serial.println("Setup..");

Serial.println("Wait 5 sec..");
delay(5000); // Задержка, чтобы было время перепрошить устройство в случае bootloop
wdt_enable (WDTO_8S); // Для тестов не рекомендуется устанавливать значение менее 8 сек.
Serial.println("Watchdog enabled.");
}

int timer = 0;

void loop(){
// Каждую секунду мигаем светодиодом и значение счетчика пишем в Serial
if(!(millis()%1000)){
timer++;
Serial.println(timer);
digitalWrite(13, digitalRead(13)==1?0:1);
delay(1);

wdt_reset();
}
}

 

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

Ez a WDT kód, a DUE-ra feltölthető, és működik a wdt:

 

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc

This example code is in the public domain.

modified 8 May 2014
by Scott Fitzgerald
*/
void watchdogSetup(void)
{
watchdogEnable(1000); //restart idő 1000-tól
}

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
Serial.begin(115200);
Serial.println ("start");
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
Serial.println("Hello World");
delay(1000);
while (1){
delay (100); // 100-tól
Serial.println(millis());
watchdogReset();
}
}

 

Előzmény: szatti (1484)
Zizikus Creative Commons License 2015.12.28 0 0 1486

Sziasztok!

 

Mint mondtam kezdő vagyok a témában, de én vetettem fel a watch dog használatát.

 

Én nem az Arduino-ban lévő valamit gondoltam ide, hanem egy külső áramköri megoldásra gondoltam. Ha jól emlékszem akkor olyasmi lehet, hogy adott idő között küldeni kell rá egy jelet a loop-on belül adott lábra, mert ha nem akkor az eszköz vagy reset-jelet küld a nano felé, vagy egyszerűen lekapcsolja a tápfeszt egy időre.

 

Ti nem ezt csináljátok? Szerintem az lenne a tuti, ha pl 1s hosszra kikapcsolja a tápot, majd újra indul minden. Azaz az Arduino erről az IC-ről kapná a feszt. (De ilyet nem találtam, csak reset jeleset.)

 

 

ilyesmire gondolok:

 

http://www.ebay.com/itm/1pc-DS1232LP-DIP-8-LOW-POWER-RESET-WATCH-DOG-TIMER-MAX1232CPA-DS1232L-DS1232-/121129873641?hash=item1c33e730e9:g:1z0AAOSwstxVDpfy

Előzmény: Prof (1485)
Prof Creative Commons License 2015.12.28 0 0 1485

Sziasztok!

Nekem van téglásodott Nano-m, valószínűleg (illetve szinte biztos) egy PROGMEM túlcsordulás verte ki a „biztosítékot”. Azt meg tudtam csinálni (egyszer), hogy sima "copy-paste" módszerrel egy másik, működő kártyáról átraktam egy működő szoftvert, ami futott is, de ezt többször nem sikerült. Mindent megnéztem rajta minden létező szoftverrel, de semmi.

 

Ami a watchdogot illeti.

Ezen a szinten én egyszerűen kiiktatnám a bootloadert. Ha van hozzá eszköz, a sketch direktben is feltölthető. Ennek három következménye lesz (egyszerűen fogalmazva), az egyik, hogy számottevően gyorsabb lesz a boot (nem kell a bootloadert kivárni), másrészt közvetlenebb lesz a kapcsolat a szoftver és a mikrokontroller között. A gáz az, hogy innentől csak így lehet programozni, simán USB-re dugva nem, legalábbis addig, amíg egy új bootloadert nem kap a kontroller.

Pár fórumba beleolvastam és voltak érdekességek a watchdog és a bootloader összeakadásával.

 

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