Keresés

Részletes keresés

Törölt nick Creative Commons License 2015.02.11 0 0 882

Ez a wire.h

 

/*
TwoWire.h - TWI/I2C library for Arduino & Wiring
Copyright (c) 2006 Nicholas Zambetti. All right reserved.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

#ifndef TwoWire_h
#define TwoWire_h

#include <inttypes.h>
#include "Stream.h"

#define BUFFER_LENGTH 32

class TwoWire : public Stream
{
private:
static uint8_t rxBuffer[];
static uint8_t rxBufferIndex;
static uint8_t rxBufferLength;

static uint8_t txAddress;
static uint8_t txBuffer[];
static uint8_t txBufferIndex;
static uint8_t txBufferLength;

static uint8_t transmitting;
static void (*user_onRequest)(void);
static void (*user_onReceive)(int);
static void onRequestService(void);
static void onReceiveService(uint8_t*, int);
public:
TwoWire();
void begin();
void begin(uint8_t);
void begin(int);
void beginTransmission(uint8_t);
void beginTransmission(int);
uint8_t endTransmission(void);
uint8_t requestFrom(uint8_t, uint8_t);
uint8_t requestFrom(int, int);
virtual size_t write(uint8_t);
virtual size_t write(const uint8_t *, size_t);
virtual int available(void);
virtual int read(void);
virtual int peek(void);
virtual void flush(void);
void onReceive( void (*)(int) );
void onRequest( void (*)(void) );

using Print::write;
};

extern TwoWire Wire;

#endif

Előzmény: Prof (874)
Vargham Creative Commons License 2015.02.11 0 0 881

Lesz rá Windows is. Ingyen. :-)

https://dev.windows.com/en-us/featured/raspberrypi2support

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

Szerintem az átlag felhasználó sem. Ő nem fog Linux-ot letölteni, meg a hardvert parancssori utasításokkal működésre bírni, meg még külön az alkalmazásokat installálni.

Előzmény: Prof (878)
pippancs Creative Commons License 2015.02.11 0 0 879

Köszönöm, akkor nekiállok az első "kütyünek", kíváncsi leszek mire jutok vele. :)

Előzmény: halaloszto (873)
Prof Creative Commons License 2015.02.11 0 0 878
Prof Creative Commons License 2015.02.11 0 0 877

A wire.print fura, megnézem majd, mi végett van rájuk szükség. 

A sok és pláne hosszú delay borzasztó. 

Előzmény: Törölt nick (855)
Prof Creative Commons License 2015.02.11 0 0 876

És gondolom 8-10 perc alatt megírható rá a kód. Mindkét eszközre. ;-)

Előzmény: Vargham (869)
x20fan Creative Commons License 2015.02.11 0 0 875

Te is azt kérdezgeted hogy mit kell tudjon egy jó riasztó.

Pontosabban mi lehet benne olyan, amihez 10-20 óránál többet kell fordítani az arduino programozására. Ha mátrixokat kellene szorozni vagy Fourier transzformációt számolni akkor érteném, de ilyesmiről szó sincs. Van a hw, az más tészta, vannak a funkciók, amiket le kell programozni. És egyelőre nem láttam olyat, amire sok programozási idő kellene.

Ha lenne egy ilyen doksi, amiben le van írva hogy mi mindent kell tudjon egy jó riasztó, akkor baromi egyszerű lenne jó riasztót csinálni.

Szerintem nem a funkciókat titkolják, hanem a megvalósítást. Tehát az hogy mit tud egy riasztó az nyilvános, hogy azt hogy érték el, milyen sw és hw elemekkel az lehet az üzleti titok. Nem lenne értelmes úgy eladni egy riasztót, hogy a felhasználói kézikönyvben a funkciók negyedét említem, akkor minek dolgoztam a másik háromnegyedével.

Másrészt ha leírnak 200 funkciót, és azt tényleg mind tudnia kell egy jó riasztónak, attól nem lesz baromi egyszerű megcsinálni.

Kevered az IDE, az SDK, a framework és a driver/library fogalmát.

Nem biztos. Nekem mint usernek az IDE látszik, ebben írom a programot, ezzel ellenőrzöm és töltöm át a boardra, és ha valamit nem enged vagy hibaüzenet jön, akkor nekem mindegy melyik mögötte levő sw egységből eredt.

Prof Creative Commons License 2015.02.11 0 0 874

A wire.h-ban van definiálva az i2c láb. Az Arduino.cc-n sok ilyen hivatkozás hibás, erre a fórumokat meg kell nézni.

Javaslom, hogy első körben külön teszteld a két érzékelőt (soros kiolvasással elég), ha így megy, akkor lehet ezt az egyesített megoldást tesztelni.
Nincs agyam most visszafejteni, gyors blikkre ennek így (legalábbis i2c viszonylatában) mennie kellene.

Előzmény: Törölt nick (855)
halaloszto Creative Commons License 2015.02.11 0 0 873

simán. mindkettő 5voltos.

Előzmény: pippancs (870)
halaloszto Creative Commons License 2015.02.11 0 0 872

persze hogy tervezesi kerdes. es persze hogy van ra jo megoldas. csak van meg ilyen masik 200. meg kell oket talalni, meg kell talalni rajuk a megoldasokat, es utanna johet a programozas meg a forrasztas.

 

Vajk

Előzmény: Vargham (869)
granov Creative Commons License 2015.02.11 0 0 871

Nem kell, mert nem lehet:

"I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using the Wire library"

A TWI lábkiosztás gyárilag előírt.

Vigyázz: az utángyártott, egyéb paneleken a számozás nem feltétlen 0-val kezdődik. Ebayos Eth.shiledl sz..ptam egy napot mire rájöttem, hogy 1-től indította a számozást, nem 0-tól. 

Előzmény: Törölt nick (855)
pippancs Creative Commons License 2015.02.11 0 0 870

Egy kis segítséget kérnék.
Adott egy RX-3302D4 vevőmodul (http://profitech.hu/pt_list_data.php?gid=9&tid=58), amit egy nano-val szeretnék összekötni. Simán össze lehet "drótozni" a vevőmodul kimeneteit a nano bemeneteivel, vagy kell valami illesztés?

Vargham Creative Commons License 2015.02.11 0 0 869

> jo, akkor mondok egyet. belocsoljak sos vizzek a szirenat. ez rovidrezarja a szirenat taplalo bejovo 12V-ot, leesik a tap, es az arduino mar ujra is bootolta magat. hova bootolsz? elesitett vagy elesitetlen allapotba?

Második processzor + EEPROM + hardveres watchdog IC. (Például motorvezérlőben láttam ilyen megoldást. Az elektromos jármű processzora úgy tud resetelni, hogy közben a vezető észre sem veszi a működésben.)

 

Lehetséges megoldások:

1. State mentése, reset esetén legutóbbi state betöltése.

2. Reset = behatolás, ami riasztást eredményez.

3. Reset esetén a watchdog IC a tartalék processzornak adja a vezérlést.

stb.

 

Ez részben tervezési kérdés, részben telepítéskor eldönthető paraméter.

Előzmény: halaloszto (866)
Vargham Creative Commons License 2015.02.11 0 0 868

> nem értek egyet. a jó termék nem hw és sw. A jó termék az jó termék. A hw és sw az csak a megvalósítás.

Így van.

 

> Ahoz hogy a termék jó legyen, először ki kell találni. Kitalálni, az a nem semmi.

Bizony, az a legfontosabb, hogy egy igényt a lehető legjobban elégíts ki.

De!

A kitalálás után általában nagyon gyorsan lehet működőképes prototípust készíteni.

Ekkor nem szabad abba a hibába esni, hogy már készen is vagy. A munka java része ezután jön.

Egy piacra dobható termék elkészítésének ideje többszöröse a prototípusénak.

 

> Te is azt kérdezgeted hogy mit kell tudjon egy jó riasztó. Ha lenne egy ilyen doksi, amiben le van írva hogy mi mindent kell tudjon egy jó riasztó, akkor baromi egyszerű lenne jó riasztót csinálni.

> Viszont ezt a doksit nem programozók és nem is forrasztópákakezűek írják.

Hanem csapatok, amiben vannak általános tudású riasztósok, programozók, hardvermérnökök, UI tervezők, tesztelők, ex-betörők, stb.

 

> keress egy riasztó használati vagy installációs doksit, és megtudod kb a negyedét annak hogy mi mindent kell tudjon egy riasztó. 

Ez egy jó tipp.

 

> a jo termék az, amiben mar baromi sok ilyen problema meg van oldva, ezert a hasznaloja nagyon ritkan fut bele egy ujabba. 

Így van.

Előzmény: halaloszto (865)
Vargham Creative Commons License 2015.02.11 0 0 867

Úgy gondolkodsz, mintha egy ilyen szoftver/hardver egység nem lenne bonyolultabb néhány mechanikus kallantyúnál. Pedig az. Sokkal.

 

> A nem lefagyás jogos, erről nem tudok mondani semmit.

:-)

 

> Ha van a programban olyan ág, ami 5000 óra után fut le először és megállítja az arduinot, akkor bukta,

> de még azt se tudom, hogy meg tudom-e állítani sketchből bárhogyan.

Futhat akár minden másodpercben is, ha csak 5000 óra után okoz gondot. Mondjuk egy túlcsordulás.

 

> Ha én írnám az IDE-t, akkor nem engednék ilyet, mert értelme nincs, ha mégis ilyet szeretne a programozó, akkor tegyen végtelen ciklusba delay-t.

Kevered az IDE, az SDK, a framework és a driver/library fogalmát.

 

> hobby projectekre van kitalálva, tehát túl nagy hibatűrést meg rettentő hosszú hibamentes üzemet nem várunk el tőle.

Ez egy nagyon jó meglátás.

Előzmény: x20fan (852)
halaloszto Creative Commons License 2015.02.11 0 0 866

jo, akkor mondok egyet. belocsoljak sos vizzek a szirenat. ez rovidrezarja a szirenat taplalo bejovo 12V-ot, leesik a tap, es az arduino mar ujra is bootolta magat. hova bootolsz? elesitett vagy elesitetlen allapotba?

 

Vajk

Előzmény: x20fan (864)
halaloszto Creative Commons License 2015.02.11 0 0 865

nem értek egyet. a jó termék nem hw és sw. A jó termék az jó termék. A hw és sw az csak a megvalósítás. Ahoz hogy a termék jó legyen, először ki kell találni. Kitalálni, az a nem semmi. Te is azt kérdezgeted hogy mit kell tudjon egy jó riasztó. Ha lenne egy ilyen doksi, amiben le van írva hogy mi mindent kell tudjon egy jó riasztó, akkor baromi egyszerű lenne jó riasztót csinálni. Viszont ezt a doksit nem programozók és nem is forrasztópákakezűek írják. 

 

keress egy riasztó használati vagy installációs doksit, és megtudod kb a negyedét annak hogy mi mindent kell tudjon egy riasztó. 

 

ha belefutsz egy problémába, akkor megoldod. mindenki így csinalja. a jo termék az, amiben mar baromi sok ilyen problema meg van oldva, ezert a hasznaloja nagyon ritkan fut bele egy ujabba. 

 

egy riasztonal a problemak jelentos resze ket kategoriaba esik bele. vagy hamis riasztast okoz, amire mindenki megszokja hogy a hulye szomszednak allandoan szirenazik a haza, vagy azt okozza hogy nem riaszt amikor kellene. utobbi fel sem tunik, mert nem szoktad tesztelgetni.

 

Vajk

Előzmény: x20fan (863)
x20fan Creative Commons License 2015.02.11 0 0 864

A riasztónál az a cél, hogy megszólaljon a sziréna ha behatolás történik. A telefonos értesítés egy másik szál. Meg a ködgyertya, nagyerejű ultrahang vagy egyéb a betörőt akadályozó ötletek is.

A sziréna támadható, burkolható ha tudják hol van, de ez nyilván kifigyelhető. Lehet a szirénát is figyelni, közelítéskor megszólaltatni, saját akkuról járatni és masszív mechanikai védelemmel ellátni, amit idő leflexelni róla. Ez elegendő a környezet figyelmeztetésére, hogy azután mi történik, az már nem programozási vagy hw forrasztási kérdés.

Ha valaki fejleszt arduinoval egy riasztót, azt senki nem fújja fejből, egyedi és ismeretlen lesz a betörő számára még ha a világon a legprofibb akkor is.

Előzmény: John Zero (861)
x20fan Creative Commons License 2015.02.11 0 0 863

Ez így rendben. A jó riasztó hw és sw, jó hw nélkül nincs jó riasztó.

Előzmény: halaloszto (859)
x20fan Creative Commons License 2015.02.11 0 0 862

Hogy működnek? Kíváncsi vagyok mit kell/érdemes még egy riasztóba programozni. Maradjunk a programozásnál.

Előzmény: Törölt nick (858)
John Zero Creative Commons License 2015.02.11 0 0 861

Egy ilyen riasztónál persze az is kérdés, hogy mi a cél?

Cél-e a profi betörőket is elhárítani, akik fejből fújják az összes riasztórendszert és kiiktatási módszert? Akik már hetekkel előtte kinézték a házat?

Vagy csak az a cél, hogy az alkalmi tolvajt elriassza már a gondolat is, hogy itt van egy aktív riasztó, ami valószínűleg megszólal?

 

Van olyan riasztó, ami "csak" szirénázik, általában ha hoznak egy vizes vödröt (vagy pur habot) és egy szép nagy kalapácsot, akkor másodpercek alatt el tudják némítani a szirénát. A szomszédok meg úgyis "letojják" a lármát, örülnek is, hogy ilyen gyorsan elhallgatott.

 

Na persze ha be van kötve valahová, az más. Viszont bekötött riasztóból csak ismert márkát fog támogatni a biztonsági szolgálat.

 

Előzmény: Prof (846)
John Zero Creative Commons License 2015.02.11 0 0 860

x20fan:

Jól tudod, valóban sokkal bonyolultabb egy termék végfelhasználói árát kiszámolni... feltéve, ha nagy játékos vagy a piacon.

 

Ha kisszériásan gyártod, akkor a nagy hiba nem az, hogy nem jól számolsz, hanem az, hogy alulbecsülöd. Pl. 2000 Ft-ért meg tudsz csinálni valamit, gondolsz egy nagyot, hogy eladod 2500 Ft-ért és "gazdag leszel". Na, itt üt be a realitás :-) Ezért a 4-es szorzó egyfajta ökölszabály, amit javasolnak.

 

Nyilván más a helyzet, ha valamit 100 ezer vagy 1 millió példányban akarsz legyártatni...

 

Előzmény: x20fan (844)
halaloszto Creative Commons License 2015.02.11 0 0 859

fogsz tudni jo riasztot programozni, csak megsem lesz egy jo riasztod. nem muszaj arra gondolni hogy a rosszember zarja rovidre a cuccot. siman eleg ha mondjuk beazik, es soha tobbet nem lesz riasztas azon a bemeneten csak neked soha fel sem tunik. 

 

Vajk

 

Előzmény: x20fan (854)
Törölt nick Creative Commons License 2015.02.11 0 0 858

Mostmár sejtem miért írtad azt, hogy 10-20 óra alatt összedobható egy valamirevaló riasztó....

 

Nagyon nem így működnek a dolgok.

 

 

Előzmény: x20fan (852)
Törölt nick Creative Commons License 2015.02.11 0 0 857

Na ja.

 

Pont a napokban szívtam egy régi PIC-es cuccossal. Nagyságrendileg 4 havonta resetelte magát. Amolyan megfoghatatlan kategória. Két napom ment rá mire rájöttem, hogy mi is csordul túl, és mitől bukik ki a watchdog timer, ami aztán reseteli az egészet.

 

Baromi alattomosoak tudnak lenni az ilyen jellegű hibák (túlcsordulások, memóriaszivárgások és társaik). És sokszor megfoghatatlan, nagyon nehéz megtalálni őket. Mert azt látod, hogy fél évig megy rendesen, majd egyszercsak ránézel, és újraindult az egész. Resetelésnél egy rakás regiszter, számlálók, stb értékek törlődtek, így nem tudsz visszakövetkeztetni mi volt a resetelés előtti állapot. Most is úgy tudtam rájönni, hogy időbélyeggel eepromba mentettem az értékeket, de így is komoly bányászatot igényelt az ügy.

 

Igazi szívás kategória. El se tudom/merem képzelni ezt egy mai komoly procinál, hogyan vezényelik le mélyebb szinteken. mert ott akkroa baki lehetőség van, ami beláthatatlan. Tudom, erre van egy rakás tesztmérnök jó nagy fizetéssel.

Előzmény: halaloszto (850)
Törölt nick Creative Commons License 2015.02.11 0 0 856

// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent()
{
Wire.println("DATA, TIME, "); // respond with message of 6 bytes
// as expected by master
}

 

Kód vége lemaradt.

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

I2C, 2Wire vonalon kérnék segítséget.

Összeállítottam a Pro Minire alapozott, Max6675 hőmérős, 2 relés termosztátot ami I2C kimenetén csatlakozik a meglevő I2C buszra.

Azt olvassa com1 porton a pc, a program vb6-ban lett megírva.

Az Arduino analóg 4. lába az SDA, 5. lába az SCL, címzése &H50, library wire.h, a kód:

 

/*
Single_Temp.pde - Example using the MAX6675 Library.
Created by Ryan McLaughlin <ryanjmclaughlin@gmail.com>

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/
*/
#define HIDEGEBB 6 // relay1
#define MELEGEBB 7 // relay2
#define MOTORFUTASIDO 1000
#define CIKLUSIDOMP 30
#include <MAX6675.h>
#include <Wire.h>
int x = 0;
int row = 0;
int LED1 = 13; // Status LED Pin
int CS = 4; // CS pin on MAX6675
int SO = 3; // SO pin of MAX6675
int SCLK = 5; // SCLK pin of MAX6675
int units = 1; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F)
float temperature = 0.0; // Temperature output variable
float hofok10 = 0.0;

// Initialize the MAX6675 Library for our chip
MAX6675 temp(CS,SO,SCLK,units);


// Setup Serial output and LED Pin
// MAX6675 Library already sets pin modes for MAX6675 chip!
void setup() {
Wire.begin(4); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL, TIME, temperature");
pinMode(LED1, OUTPUT);
pinMode(HIDEGEBB, OUTPUT);
pinMode(MELEGEBB, OUTPUT);
}

void loop() {
// Read the temp from the MAX6675
temperature = temp.read_temp();

if(temperature < 0) {
// If there is an error with the TC, temperature will be < 0
Serial.print("Thermocouple Error on CS");
Serial.println( temperature );
digitalWrite(LED1, HIGH);
} else {
//Serial.print("Current Temperature: ");
Serial.println(temperature );
digitalWrite(LED1, LOW);
Serial.print("DATA, TIME,");
row++;
x++;
}
// Wait one second before reading again
delay(1000);

int hofok10 = temp.read_temp()*10;
if(hofok10 > 300) {
digitalWrite(HIDEGEBB, LOW);
}
if(hofok10 < 290) {
digitalWrite(MELEGEBB, LOW);
}
delay(MOTORFUTASIDO);
digitalWrite(HIDEGEBB, HIGH);
digitalWrite(MELEGEBB, HIGH);
delay(CIKLUSIDOMP*100);
}

 

Mivel nem egy másik Arduinoval kell I2C buszon kommunikálni, nem kell a lábakat külön megadni?

x20fan Creative Commons License 2015.02.11 0 0 854

Rendben. Engem ebben a témában a programozási igény érdekel. Mi olyat tud a gyári riasztó, amihez sok órányi programozás kell az arduinon?

 

A szenzor kiiktatásról riasztós tapasztalat nélkül: hogyan? Pl. egy falon van egy 180 fokban látó passzív infra, nem lehet megközelíteni anélkül, hogy megszakítsa a kört. Hogyan lehet ezt könnyen kiiktatni? Az alap, hogy a riasztóközponthoz nem lehet hozzáférni, hogy ott egy dróttal helyettesítse a kört, ami így soha nem fog megszakadni.

Vagy ajtónyitást érzékelő mikrokapcsoló. Hogyan fér hozzá bármihez is az ajtó nyitása nélkül, amikor viszont a kapcsoló szakítja a kört? Belülről igen, de ha bejut, akkor a passzív infra fog jelezni.

 

Az egyéb villámvédelem, nagyfesz, érintés, zavarvédelem, életvédelem stb. téma az egy másik kérdés.

Előzmény: halaloszto (853)
halaloszto Creative Commons License 2015.02.11 0 0 853

>A szenzorok nem sorba vannak kötve egy körön, és csak szakadást vizsgálunk?

 

csak erre az egyre: ha igy lenne akkor baromi egyszeru lenne a szenzort kiiktatni. egy kulon fejezet a szabotazsvedelem.

 

egy riasztot vagy barmi mas termeket megtervezni pont azzal kezdodik, hogy ossze kell szedni hogy mit kell tudjon. es ez a melonak egy igen komoly resze, raadasul nem is csak szakertelmet, hanem tapasztalatot igenyel. riasztot tervezni nem programozo tapasztalat, nem villamosmernok (forrasztas) tapasztalat, hanem riasztos tapasztalat szukseges.

 

Vajk

Előzmény: x20fan (852)

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