# ATMEL mikrokontrolleri >  I2c uno

## iesācējs

Sveiki! 
Radās jautājums par datu sūtīšanu no viena uno uz otru izmantojot SCL un SDA vadus. Apskatīju piemērus, sapratu un iemācījos nosūtīt datus no mastera uz slave, var nosūtīt arī no slave uz master. Jautājums ir vai var nosūtīt datus abos virzienos vienlaicīgi? tas ir, Masters uz sleiviem aizsūta datus piemēram x un y vērtības,un tait pat laikā slave ierīce sūta z vērtību uz masteri, vai cik sapratu pareizāk būtu teikt masters nolasa z vērtību no slave ierīces.
Te ir simulācija kur saslēgti 2 uno, un datu sūtīšana notiek vienā virzienā.
https://circuits.io/circuits/4891134...nnamed-circuit
būtu labi ha kads varētu pateikt kas jāpieliekkodam, lai masters nolasa arī datus no slave ierīcēm.
Masters


```
#include <Wire.h>
int x;
int y;
void setup() {  
  Wire.begin(); 
}
void loop() {
   x=5;
  y=10;
  Wire.beginTransmission(1); 
  Wire.write("Dati");        
  Wire.write(x);
  Wire.write(y);
  Wire.endTransmission();
  delay(100);   
}
```

 slave


```
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int x;
int y;
void setup() {
  lcd.begin(16, 2);
  Wire.begin(1);               
  Wire.onReceive(receiveEvent);
}
void loop() {
  x = Wire.read();
  y = Wire.read();
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(x); 
   lcd.setCursor(0, 1);
  lcd.print(y); 
  delay(100);
}
void receiveEvent(int howMany) {
  while (2 < Wire.available() ) {
    char c = Wire.read(); 
  }
}
```

 Tik lūdzu nesāciet ar to lai mācos c++, eju pie gugles utt. 
Neesmu ne elektronoķis ne programmētājs, šis projekts ir tīri individuali prekš sevis, jo nevaru atrast, vai atļauties sev piemērotu gatavu risinājumu.

----------


## Jurkins

Tai pat laikā nesanāks, I2C nav full duplex, ja pareizi atceros.

----------


## iesācējs

Paldies!
Tāpēc domāju kāpēc varu nosūtīt atsevišķi gan vienā gan otrā virzienā, bet vienā programma iekļaut sūtīšanu abos virzienos neizdodas.

----------


## JDat

Vienalikus varēsi sūtīt pa Serial vai SoftwareSerial

----------


## Jurkins

Pa SPI arī var abos virzienos.
Vienā programmā ari ar l2C gan var sūtit abos virzienos, vienlaicīgi nevar. Kodu gan neuzrakstīšu, ar I2C tā īsti nedraudzējos.

----------


## iesācējs

tad pie mana koda un slāguma ir iespējams piekabinat klāt attiecīgās rindiņas, lai dati tiktu nosūtīti arī pretēja virzienā? Pretējā virzienā man jāsūta 1 mainīgais.

----------


## Jurkins

Tieši tā. Patiešām nepateikšu, bet kaut kā tā - māsters nosūta savus datus, tad nosūta komandu sleivam, lai sūta savējos, un sagatavojas saņemt. Attiecīgi sleivs saņem no māstera datus, sagatavo (vai jau ir sagatavojis) savus un, kad saņem komandu, sūta prom. Varbūt kāds pieredzējušāks varēs Tev palīdzēt. Es I2C neesmu apguvis.

p.s. Tev ir obligāta prasība izmantot I2C?

----------


## JDat

Ar tiem pašiem paraugiem, ko iesācējs jau iemata, var uztaisīt divvirzienu sakarus. Master sūta datus uz slave un pēc tam master saņem datus no slave.

----------


## iesācējs

Nav obligāta prasība I2C. Šo izvēlējos dēļ ta ka sakumā likās vienkārš,jo neesmu nekāds specs, mans arods ir galīgi nesaistīts ar elektroniku.
Un cenas ziņā, jo I2C prasa 3 vadu savienojumu, leti vadiņi un štepseļi, bij doma izmantot standarta stereo vadiņus. Teorētiski varu iztikt arī tikai ar vienu arduino, bet tad man vajag vismaz 9 dzīslu vadus, štepseļus un visu pārējo.
Projekts paredzēts akvārija gaismai. kur ir 6 dimmejami gaismas kanali, pretējā virzienā jasūta temperatūra.
doma ir tāda, viens uno ka kontrolieris,kam klāt ekrans kurs rāda visu vajadzīgo infu un podziņas. uz tā griežas arī visa programma kas kontrolē saullektu, dienasgaismu un saulrietu. tālāk tas datus nodod citiem arduino, kas tos izmanti ar pwm kanāliem dimmejot gaismas. Pasi gaismekļi būs 2, tāpēc sanāk ka būs 2 slave arduino. un katrā gaismeklī gribu ielikt temperatūras sensoru, kas pie noteiktas temperatūras ieslēdz ventelatoru lai gaismeklis nepārkarst. No slave uz master dati jāsūta lai temperatūru varētu izvadīt uz ekrana, ja tas neizdosies,iztiksu bez tā ka redzu temperatūru ekranā. Ar  šitiem paraugiem jau mēģināju, bet kaut kas man nesanāk, kad mēgināju katru atsevišķi, vis strādā, dati tiek nosūtīti, kā salieku abus kopā vainu nestrāda nekas, vai sūtas nikai no master uz slave.

----------


## JDat

Katram slave jābūt savai adrese. Izmantot adreses 0-8 nav vēlams. Piemērā redzu ka slave adrese ir 1. Uzliec vienam slave 10, otram 11.

----------


## iesācējs

Skaidrs adreses nomainīsu, to nezinaju. Tad pamēģināšunu velreiz. Sākumā gan mēginu ar vienu slave, velak sataisīt  programmu preks 2 slave nav problema, bij man arī tāda simulācija kaut kur. Mājās tik viens UNO palicis, tāpēc reāli nasanāk izmēgināt.

----------


## sasasa

> Izmantot adreses 0-8 nav vēlams..


 Kāpēc?????

----------


## JDat

> Kāpēc?????


 kaut kuras tajā regionā bija broadcast vai tml. Jāgooglē. Precīzi vairs neatceros, bet standarti ir domāti lai tos ievēru, nevis pārkāptu.

----------


## iesācējs

Paldies visiem kas palīdzēja,izskatās ka vis sanāca. ieprieks nesanāca, jo pārrakstot piemērus biju nedaudz kļūdījies, laikam vairak jāizmanto copy/paste, a es gribēdams labāk saprats un atcerēties...

----------


## Jurkins

Jā, ar Arduino tā ir - copy/paste. It kā ir viegli rakstīt, daudz bibliotēku, bet nav "priekšāteikšanas". Es pēdējā laikā "ienesu" Arduino projektu iekš Atmel Studio, tad ir krietni vieglāk rakstīt. Nu bet ja vienreizējs projekts, tad nav vērts čakarēties.

----------


## iesācējs

Cenšos pats vairak rakstītlai kautko saprastu un atcerētos, jo programmešanu esmu mācījies 90 gadu beigās bišķi beisiku, un arī to parsvarā tikai zīmēt uz krievu bekam, un vēlak nedaudz paskalu, bet no tā ar maz ko atceros.

----------


## Jurkins

Es vairāk par to, ka Arduino vidē Tu izmanto to Wire bibliotēku piemēram. Uzraksti "Wire." ...un nekā, bet Atmel Studio tūlīt "izkrīt" meņuška ar visām pieejamajām Wire bibliotēkas funkcijām. Nu vienīgi, arduino atmiņu labi trenē  :: .

----------


## JDat

AVR studio nav vienīgais, kas to māk. Te var sākties krusta kari par to, kura IDE labāka. Nejauc galvu iesācējam. Apgūs Arduino IDE, sāks skatīties uz kaut ko nopietnāku.

----------


## Jurkins

OK, nesāksim krusta karus  ::  Vienīgi varu apšaubīt to, ka ir jēga apgūt Arduino IDE. Pirmo projektu uzrakstīt, jā, tieši tas, ko vajag, bet, ja ir āķis lūpā, tad mest prom. OK, viss, klusēju par šo tēmu  ::

----------


## iesācējs

Nav gluži pirmais projekts, un noteikti ne vienīgais, varbūt sis ir sarežģītākais. Varbūt kādreiz arī pamēģināšu kādu citu softu, pagaidām man neko vairāk nevajag.

----------


## JDat

Pilnīgi pareizi. No sākuma jāapgūst arduino IDE. Tas nekas ka ir labākas. Ar citām sāksies vēl vesela kaudze nianšu. Izmanto to, kas strāda. OK. Jābeidz beztēma.

Pietrūkst arduino? Par sakarīgām naudām vār piepirkt klāt arī vietējā bodē, ja negribas gaidīt kad atnāks no internetiem.

----------


## iesācējs

Es šitos visus štruntus ebajā sūtu, tomēr stipri lētak sanāk, ja vajadzētu tik vienu arduino, tad varbūt neatmaksājas gaidīt, bet takā man arī ledi jāsūta un daudz kas cits, tad atmaksājas mēnesi pagaidīt.

----------


## JDat

Kā mēdz teikt: "Laiks ir nauda."
Vajag ātri: maksā.
Gribās pa lēto: gaidi.

Sanāk ka pilnvērtīgs eksperiments ar I2C nebūs kamēr neatnāks pārējie arduino?

----------


## Kodolskiltava

> Pilnīgi pareizi. No sākuma jāapgūst arduino IDE. Tas nekas ka ir labākas. Ar citām sāksies vēl vesela kaudze nianšu.


 Šitam gan nepiekrītu. Nianses ir arī Arduino videi tikko grib ko vairāk kā midžināt gaismiņu. Tā jau ir ar visām vidēm, pierodi pie vienas un tad citas liekas ar dīvainībām.

----------


## JDat

Nu bet nevajag iesācējam uzreiz ne sehu ar Geany un makefile, ne arī svestjelkām un perdjelkām no AVR studio, ne arī platformio ar saviem brīnumiem. Kad būs par īsu tad arī pats apgūs.

----------


## iesācējs

Nu visticamak projekts taps tik vasaras otrā pusē, jo pat ebajā lielāko daļu sūtot gala cena ir visai pamatīga.

----------


## sasasa

> jo pat ebajā lielāko daļu sūtot gala cena ir visai pamatīga.


 ieinteresēja - kam tad ir tā pamatīgā cena eBay? Man gan liekas ka tur par kārtu lētāki visi šie nieki. Tik tā bēda ka reizēm jāgaida mēnesi, lai gan ir bijis ka pa nepilnu nedēļu atsūta.
..
Bet ko nevaru saprast - PRIEKŠ KAM tur likt 2 kontrolierus un KĀPĒC kautko sūtīt no viena gala uz otru. Tikai tāpēc, lai uztaisītu sarežģīti to ko var uztaisīt vienkārši? Uzliec vienu Nano vai mircoPro un pieslēdz visu ko vajag. Ja gribi uz vadiem, tad kāda problēma paņemt vadu ar 9 dzīslām, da kaut ar 20, tik priekš kam. Uz lediem? Tur tāpat cik kanāli tik vadi, jo diez vai jēga ar multipleksoru čakarēties.  Ja tie sensori jāliek lielā attālumā, tad vispār labāk uz ESP8266 pāriet un bez kādiem vadiem visu saslēgt. 
.. bet nu labi - katrs var taisīt kā grib.

----------


## iesācējs

Nu tā ir gaisma jūras akvārijam, arduino, ir tas lētākais, ledi 3 watīgie, daudz dažādi, ldd draiveri, barokļi un citi sīkumi, Vēl radiarori un karkasa materiali, tos gan pirkšu uz vietas. būs 2 gaismekļi ar maksimālo jaudu katrs pa 180 wati.  Puslīdz normālas gatavas gaismas izmaksā sākot no 500 eiro lietotas. Es ceru ap kādiem 250-300 iekļauties. Ja pirktu visu pie mums sanāktu nenormāli dārgi.
Ja kādam rodas doma taisīt pustonnu lielu jūras akvāriju, silti iesaku vispirms izmaksas apdomāt  :: 
Par sūtīšanu no ebay, ja sūta no eiropas nāk 5-15 dienas, ja no ķīnas tad 15-45, bet visbiežam ap 30 dienam.

----------


## Jurkins

2 LED gaismekļi, katrs 180W? Oh, my annunah!!!

----------


## iesācējs

Nu savulaik kad gaismas vel taisījām ar T5 dienasgaismām, tad rēķinājām viens vats uz litru, ledus vaig bišķi mazāk. bet tākā tie būs dimmejami pa kanāliem, katrs kanāls cita krāsa. Lai var piegriezt pareizo spektru, līdz ar to uz max jaudu viticamāk tas nekad nedegs, bet katrs gaismeklis kādi 120-140W varētu spīdēt dienas vidū. Jūras akvārijs man 500 litri. Tā kā būs normāli. ja vajadzēs  ar laiku varēšu arī trešo gaismu uztaisīt.

----------


## Jurkins

OK, no akvārijiem neko nesaprotu. Tā uz sitienu padomāju - pustonna ūdens, tas ir metrs reiz metrs reiz pusmetrs, un tur 360W LEDu.

----------


## sasasa

Da štrunts ar watiem, varbūt gribās, lai ir vienādā silgtumā ar saules gaismu, bet kāda mārrutka pēc priekš 2 gaismekļiem jāliek 3 kontrolieri, tas līdz manai saprašanai neaiziet. Varbūt paskaidrojiet man. Pārlasīju vēlreiz to ideju - 2 gaismekļi, displejs, sensori temperatūrai un gaismai. KUR tur vajag 3 mcu? Gribas displeju atsevišķi no akvārija? Tad priekš kam vispār vilkt vadus?? Skaties visu no mob telefona un tur arī regulē kā sirds vēlas. Savukārt uz gaismekļiem tāpat barošana jāvelk, tā kā tur bez vadiem neiztikt, bet tāpat vien aiz 'navkodarīt, dzenāt pa i2c datus šurpu turpu, lai ieslēgtu 6 lampiņas? Pie kam tas i2c diezgan jūtīgs uz līnijas garumu un visādiem traucējumiem.
Un kāpēc izvēle uz UNO? Vai lai lielāka un iespaidīgāka kaste izskatās  ::

----------


## iesācējs

Par vatiem, jā jūras akvārijam gaismu vajag tuvu saules gaismai, lai gan līdz saulei tālu  ::  Tur neaudzē augus un karpas, tur aug Korāļi un okeāna zivis.
Par izvēli kāpēc 3 uno. Akvārijs ir neregulāras formas, tā teikt nav parastais četrstūris tāpēc nav ērti taisīt vienu gaismu, bet taisīšu divas. Ja būtu viena nav problēmas, viens uno iekša lampā un miers vis darbojas. man divas lampas, varētu likt katrai savu kontrolieri iekšā, bet tad tas nozīme katru atsevišķi man jāiestata, cikos ieslēgties, cik ilgi saullēkts, cik ilgi diena, visi spilgtumi pa kanāliem utt, nav ērti, un ja kādreiz kas jāpamaina, tad atkal uz abām lampām, tādēļ izvēlējos variantu ar trim, katrā lampā viens kas saņem datus un būtībā tos pārraksta uz PWM kanāliem preks draiveriem kas darbina ledus, un atkarībā no temperatūras ieslēdz izslēdz ventilatorus. trešais ir ārpusē uz kura ir programma un kam ir displejs, tas ir vadībai. līdz ar to ja man jāpamaina kādi parametri es to izdaru uz kontroliera un abas lampas deg vienādi. Kā jau rakstīju, var iztikt ar vienu, un vilkt vadus, 6 led kanāli, ventilators, termosensors un masa tie jau ir 9 vadi. Tātad vajag 9 dzīslu vadu, 9 kontaktu štepseļus. Štepseļi izmaksā dārgāk kā arduino. Kāpēc UNO, tāpēc ka lēts. Labi nano vai micro ir lētāks un mazāks, tiem kas lampā nav nozīmes izmēram, tur vieta atradīsies jo lampa vienalga ir gana liela, tas kas ārpusē, man netraucēs ja tas bišķi lielāks. Varbūt pasūtīšu arī mazākus. Par I2C vada garumu, zinu ka tad ja tas ir garš tam jādod barošana. Un ja tagad sāksi skaidrot ka lampās  uno vietā var izmantot kādu mikreni vai ko citu, tad kā jau teicu neesmu elektroniķis, nav sajēgas ko tur var likt ko nevar, zinu ka uno var  ::

----------


## sasasa

Garš raksts, bet vienalga man skaidrāks nekas nekļuva.
1. Štepseļi dārgi. Akvārijs par 250eur, bet piemēram rj45 štepselis par 0.20eur jau ir dārgi. Un 4 vītie pāri liekas par maz priekš katras lampas. Un pat ja būtu par maz, tad pielikt 2 štepseļus nedrīkst?  Vajag mitrumizturību, ir arī tādi.
2. Kāpēc to vadību nevar likt vienā no lampām, lai būtu mazāk vadu/savienojumu/datu pārraides līniju? Arī par vienu kasti mazāk.
3. un kāpēc  lampai nesūtīt tikai gatavas komandas plikiem draiveriem. Priekš kam 2. lampai jāzin sensora dati, un kautkas pašai jāskaitļo?
4. Par i2c. Man ir bijušhas problēmas pat ar 15cm savienojumu dēļ  tuvu novietotiem motora draiveriem. Tev tur 360w ledi. Vai tur darbosies i2c, ja tev 1m garš akvārijs?
5. Un nobeigumā. kāpēc neizmantot DMX, ja reiz gribas uztaisīf smuki un pa kruto? Gatavi draiveri, gatavi štepseļi, atstrādāta sistēma, nekas nav jādomā. Vai tas šeit vajadzīgs? Nezinu, katram pašam jāizlemj. Bet tas ir vienkārši un stabili. Pēc tam slēdz klāt kautvai 100 lampas vai jebkādas citas ierīces/mehānismus.

----------


## iesācējs

1. Akvārijs nav par 250, tas ir jau ap 2000 izmaksajis.  Man liekas ērtak viens trīsdzīslu vads nekā 2 astoņdzīslu. 
2. Teorētiski vadību var ielikt vienano lampām un otru vadīt no pirmas, un savienot abas kopā, bet man noteikti vajag displeju, un vadības pogas, ērtak ja tas man pieejams blakus akvārijam, nevis virs akvārija
3. Nu lediem un arduino noteikti būs atsevišķi barokļi, lediem 36V vai 48V arduino 12, domāju tur traucējumi būs maz, pietam ledi caurs draiveriem slēgsies lēnām.
Un ceru ka man tas savienojums strādās ar garāku vadu kā 15cm, ja nedarbosies meklēšu citu risinājumu.

----------


## sasasa

Ir jau arī rs485, tas toč strādās. ! Ja DMX neiepatikās. Man dmx patīd dēļ savas uzbūves. Tieši gaismām. gatavi draiveri/dekoderi, nekas nav jāizdomā. 
Un cik tad "lēni" tev tās lampas slēgsies? Vai pwm uz 5Hz strādās ?   :: 
Kā jau teicu - es vadību liktu no telefona, lai liekas kastes un vadi nemētājas. Nafig tie displeji mājās pa visām malām?

----------


## JDat

Ir jau arī softwareSerial. Tie paši divi datu vadi un zeme. Gaumes jautājums.

----------


## sasasa

Ja fano par Arduino Uno, tad ir arī šāds  ::  Spraud tik galā gatavu draiveri un lieta darīta. Otra galā spraud tik klāt visus savus ventilatorus, lampas, burbuļmašīnas utt. Pilnīgs Lego

----------


## iesācējs

Nav ne jausmas kas ir rs485 kā jau teicu neesmu elektroniķis. Gaismas no 0 līdz max iestatījumiem iedegsies apmēram 2 stundu laikā, tāpat arī dzisīs. Tur kods jau man izdomāts un notestēts uz vienīga UNO kas man ir mājās, jāpārtaisa būs tik lai signals netiek padots  pwm kanāliem, bet nosūtīts pa i2c.
kas ir tas verķis bildēs man ar nepielec.
DMX man šķiet ka domāts cita veida gaismām

----------


## sasasa

Tas , ka tas gaismas dzisīs 2 stundas neko nemaina. Tas ir pwm. Ar kādu frekvenci tev pwm strādās? 
I2C ir domāts iekšējiem savienojumiem starp čipiem. 
I2C is an official standard serial communication protocol that only requires two signal lines that was designed for *communication between chips on a PCB.*
Jā, ir puikas kas arī 100m aizsūta ar i2c, bet vai tā realizācija ir to vērta. Tam ir citi protokoli un standarti. Šajā gadījumā, kur viss ir tik primitīvi pietiek saspraust no lego un neko nedomāt. Es tā darītu. Pat lodāmurs tur īsti nav vajadzīgs.  Nu labi bik pārspīlēju. bet manu domu saprati. 
RS485 - https://en.wikipedia.org/wiki/RS-485
DMX512 - https://en.wikipedia.org/wiki/DMX512  , un tas nav tikai gaismām. tur slēdz klat ko gribi. Kaut gludekli  ::  , bet jā, RS485 universalāks
p.s. Negribu ne uz ko pierunāt - tās tik manas pārdomas. Starp citu TNX par postu - šai sakara arī atcerējos par vienu nedaudz pamestu projektiņu ar DMX. Varēšu nu atkal pieķerties  ::

----------


## JDat

Nu priekš kam 5 metru attālumā vajag RS485 vai DMX? RS485 ir half duplex un ja nezin ko dara, tas sex garantēts. DMX ir vienvirzienu sakarai (par RDM paplašinājumu nerunāsim).

Ja iesācējs grib divvirzienu sakarus, tad:
a) pietiek ar I2C, ja iesācējam tā gribās. Es labāk uzreiz pāreju pie b punkta.
b) Ja I2C netrādā, tad lietojam softwareSerial. Vienkāršāk par I2C un vajag arī divus vadus+GND.
c) Ja softwareSerial nesnāk (traucējumi), tad pieliekam klāt MAX485, vai SN75175 vai SN75176 mikroshēmas.
Ko dara šīs mikroshēmas? Garo vai īso versiju? Īsā versija: Atļauj serial datus sūtīt lielos attālumos. Tie ir tādi kā "signāla pārveidotāji/pastiprinātāji", bet tad vajadzēs 4 vadus+GND. Vajadzīgi tika ja b punkts nestrādā.

----------


## sasasa

> lietojam softwareSerial. Vienkāršāk par I2C un vajag arī divus vadus+GND.
> c) Ja softwareSerial nesnāk (traucējumi), tad pieliekam klāt MAX485, vai SN75175 vai SN75176 mikroshēmas.
> .


 Vispār jau ar to arī vajadzēja sākt, jo ātrums te vispār nekāds nav vajadzīgs. Bet ir jautājums priekš kam te vispār divvirzienu sakari? Un prieks kam n-tie MCU?? Lai ieslēgtu ventilatoru? To var visparatākais termoregulators izdarīt bez kādiem procesoriem un kontrolieriem. Lai apskatītos cik grādi lampām? priekš kam? Tā gribās? Tad ieliek lampā gatavu termometru. Ļoti, ļoti gribās uz ekrāna - slēdzam pie WiFi un arī darbā varam cauru dienu skatīties cik lampai vai ūdenim temperatūra. Man patīk ka viss ir vienkārši un saprotami, bez "zobu labošanas caur ..."  Un ja tā, tad pilnīgi pietiek ar vienvirziena datu pārraidi un 1 mcu. 
Kāpēc DMX.? Da tapēc, ka tur VISPAR nekas nav jādoma - saspraud ka Lego. Viss ir nopērkams gatavos moduļos. Paplašīnāt vari jebkurā brīdī. Vai tas šeit ir nepieciešams? Var jau būt ka nav, bet ātri un vienkāršī.
..bet nu labi, labi, nejaucos. katrs taisa tā, kā viņam liekas ērtāk.

----------


## JDat

Sasasa. Iedomājies ka tev ir divi ventilatori un 6 LED prožektori.
1 karlsons un 3 prožektori+3 prožektoru termosensori vienā pusē (slave).
Datu kabelis
1 karlsons un 3 prožektori+3 prožektoru termosensori + LCD+pogags otrā pusē (master).
Iesācējs negrib vilkt kaudzi ar vadiem uz katru iekārtu. Tā vietā būs divi mezgli, no kuriem ir neliels kabeļu daudzums.

Tikai iesācējs zin kā tas izskatīsies dabā, tāpēc grib tieši tā un ne savādāk. Mums to nesaprast.
Dati abos virzienos? Itkā nevajag zinānt kādā stāvoklī atrodas tālie LEDI un karlsons, jo tāpāt master regulāri sūta status par ON-OFF spilgtumu utml uz slave.
Savukārt uz displeja gribās redzēt slave LED prozēktoru temeratūrū. Tāpēc slave sūta termometru datus atpakaļ uz master.

It's that simple!

Protams var paņemt vienu ArduinoMega (jo visdrīzāk vienam UNO nepietiks I/O kāju) un nevajadzēs slave kontrolieri, bet tad būs kaudze ar vadiem apkārt akvārijam.

Ja jau cilvēks grib pablēņoties, tad lai jau ņemās. Nav obligāti jāmaina viņa dizains.

Starp citu, es saliktu kaudzi ar tiny85+HV9910 LED draiverus (vai FAN draiveri) un regulāri sūtītu katram tiny PWM spilgtumu + emergency OFF temeratūru. Centrālajā smadznē būtu viens uno+LCD+pogas. Jā neredzētu led temperatūru un emergency stāvokli, bet varētu uzstādīt pie kādas temperatūras LEDiem jāizslēdzas. Bišku neforšāk, bet derēs.
Man vajadzētu vienu datu signālu+GND dasy chain slēgumā.

----------


## sasasa

> Ja jau cilvēks grib pablēņoties, tad lai jau ņemās. Nav obligāti jāmaina viņa dizains.


 Protams, ka nevajag mainīt, jo katram sava ideja ir vistīkamākā, bet atceroties ka es ar to I2C nocīnījos, kad man bija tikai 15cm līnija, man pati doma par I2C kautkur prom no PCB gabarītiem neliekas īpaši vilinoša. Pie kam man toreiz bija ekranēts kabelis, vīti pāri, ferīta gredzeni barošanā utt. Nelīdzēja. Uz pcb man arī patīk, ka tikai 2 ceļi jānovelk un daudz kur to izmantoju  :: 
Tā vajadzība pēc visiem lampu temperatūru datiem uz ekrāna pazūd jau pēc pirmās nedēļas. Un vēl zinu, ka piem man tāds displejs blakus akvārijam nu neparko nepatiktu un dizainu nepapildinātu. Manā variantā, ja tāds būtu, displejs vai nu telefonā vai noslēpts zem vāka lampā vai vel labāk elektrības sadalē pie automātiem. Vienu reizi iestādi un aizmirsti uz visiem laikiem. Tak neiesi tur lūrēt ik pa 5 min. Automātika ir laba tāda, kuru neredzi un nejūti viņas klātbūtni, nevis kas deguna priekšā rēgojas.
Bij viens uztaisījis sev "gudro māju". varēja no jebkuras vietas caur web redzēt kur deg gaisma, kas ieslēgts, cik grādi pagrabā, istabā, aiz loga, cik ūdens iztērēts, cik reizes mazmājiņa kāds gājis un cik litrus ūdeni nolaidis. Un rezultāts? Paspēlējās nedēļu, nu varbūt divas, parādīja darba kolēģiem, palielījās kaimiņiem un ar to arī beidzās, jo reāli tas viss nafig nav vajadzīgs un tā ir tikai lieka informācija smadzenēm. Gadžets lieliem bērniem  ::

----------


## Kodolskiltava

Nezinu, kas jums ir tik ļoti pret garu I2C. Ja normāli uztaisa man it kā nav bijušas problēmas. Bez šaubām, līnijas parametri ietekmē max ātrumu. Man reiz priekš darba bija sviestains projekts, kurā lasīju laikam 8gab temperatūras sensorus, kuri bija sakarināti kopā vismaz 10m garā vadā un viss bija pilnīgi OK. Plus vairāki līdzīgi risinājumi ar mazāk temperatūras/mitruma sensoriem stāv un strādā 24/7.

----------


## iesācējs

Dizains un lietošanas ērtums man tiešam ir svarīgs, tāpēc šāda varianta izvēle. Displejs nebūs navinam citam redzams, tas atradīsies telpa kur uzturos tikai es apkopjot akvāriju, bet tas ir vajadzīgs, jo citādi regulēt spilgtumu kanālos būtu diezgan sarežģīti. Vadīt visu ar mobilo, protams būtu vel ertak, tik to es toc nemācēšu uzprogrammēt, zinu ka ir gatavas iekārtas, bet tās man neder vai ir daudz par dārgu. tāpēc UNO.
Driveri būš šādi
Ledi šādi
Daudz kanāli jo dažādas krāsas Royalblue, Blue , cayan, red, 5000K, 10000K, violet, UV. Pa toņiem atsevišķi jāregulē max spilgtums, lai ir OK.

----------


## Jurkins

Nē, nu īstenībā man arī neleikas nenormāli tie daudzie kontrolieri. Protams, ka (kā JDat raksta) pie katras lampas pietiktu ar 85. tīni, bet reāli jau tie UNO (man labāk patīk pro mini) nemaksā neko. 
Diodes gan ellīgi dārgas. Ja jau sipam santīmus (nav uzbrauciens, pats tāds esmu  ::  ), tad lētāk sanāk diodes un "zvaigznes" pirkt atsevišķi. Un vēl var nopirkt dažādu izmēru un izskata Al PCB, kuras tad pieskrūvē pie smukiem radiatoriem. Vai ir vērts katru diodi pie sava "zvaigznes"?
Kāpēc gribi draiverus divās pakāpēs likt? Drošības apsvērumi - akvārijs, slapjas kājas ... un slīkonis akvārijā (ekskluzīvi  ::  )? 

off. man stāvēja kādu laiku "tumbočkā" HTU21 temperatūras sensori. Šiem arī I2C feiss. Vakar vakarā saņēmos saspraust un notestēt uz arduino. Wire un HTU bibliotēkas klāt - ~5K kods. Maķ vašu za nogu! Nē, nu ir jau labi, atmelim vietas pietiek, bet nu ...

----------


## sasasa

> Vadīt visu ar mobilo, protams būtu vel ertak, tik to es toc nemācēšu uzprogrammēt,


 Pamēģini. Tas nav neko sarežģītāk ka priekš LCD displeja un pogām. 



> Driveri būš šādi
> r OK.


 Tikko priekš sevis šādus noskatīju izmēģināšanai. 3x6A, 9-32V. Un nekādu MCU, paši dekodē signālu un regulē LEDus!

----------


## M_J

Paldies tēmas autoram par vienu lietu. Visu laiku nekādi nevarēju saprast Arduino milzīgo popularitāti. Kas tur ir TĀDS, ka cilvēki to lieto. Man daudz ērtāk ir uztaisīt risinājumu konkrētai vajadzībai, izmantojot to pašu Atmel mikrokontrolieri, kā lietot Arduino ar visām tām universālajām iespējām, kuras konkrētajā gadījumā par 90% vienalga paliek neizmantotas. Un konkrētai vajadzībai taisīta ierīce arī labāk strādās. Bet tēmas autors vairākkārtīgi atgādina, ka viņš nav elektroniķis. Un pēkšņi man kā zvīņas no acīm nokrita. Lai darbotos ar Arduino, nav nepieciešams būt elektroniķim. Strādājošas lietas var uztaisīt jebkurš, ar loģisko domāšanu apveltīts cilvēks.
 off, paskatījos, kas tas HTU tāds ir. Tā arī nesapratu, kā tur var dabūt 5K kodu. Assemblerī ar tādu apjomu veselu rūpnīcu var darbināt.

----------


## JDat

Uz arduino stipri pieaug koda apjoms kad izmanto serial.print(something); Respektīvi, tiklīdz notiek datu formatēšana un izvadīšana cilvēkam tīkamā formātā.

Starp citu, raķešzinātnē izdevās piedzīt pilnu (8kb) program memory priekš attiny85. Vakardien...
Šodien kaut kā nometu uz 7 kb, bet ar kardinālām algoritma izmaiņām. Tagad tikai sāksies jautrība ar testēšanu.

Labi, labi, beidzu braukt beztēmā.

----------


## Jurkins

off. M_J, wire (I2C) bibliotēka to dara. Nebija līdz šim nācies I2C izmantot. Tikai tā pamēģināju, to HTU izmantošu, bet noteikti pats uzrakstīšu vienkāršu, minimālistisku I2C "draiveri". Jā, un tam wire "kājas" šķiet aug turpat, kur serial.print, šim arī ir funkcijas, kas ļauj stringus raidīt/uztvert. Nu ja, un HTU biblene izmanto float matemātiku.

Papētīju to Arduino oriģinālo twi.c , kas sēž zem Wire biblenes. Nesaprotu, kāda vella pēc šie izmanto pārtraukuma vektoru, ja gan rakstīšanas gan lasīšanas funkcijā ir kāda "īpaša" rinda -


```
 while(TWI_MRX == twi_state)
{
    continue;
 }
```

 Sanāk, kamēr state machine ir stāvoklī TWI_MRX (Master recieve), un līdzīgi pie transmit, atmelis maļ tukšo ciklu, un neko citu šajā laikā tāpat padarīt nevar. Bet, ja defaultā I2C strādā ar 100kHz, tad pie atmeļa 16Mhz, tas ir nežēlīgais lērums tikšķu. Tad jau nav nekādas vajadzības pēc pārtraukuma, pietiek ciklā baudīt pārtraukuma karogu. Jeb es kaut ko ne tā saprotu?

----------


## iesācējs

Nolēmu apkopot pāris atbildes uz jautājumiem kas izskanēja šai tēmā.
1. Ledu izvēle. Izvēlējos šos, jo šiem ir vis plašākā un precīzākā spektru izvēle, jo man ir vajadzīgi konkrēti spektri, 400nm, 450nm, 490nm utt. Kāpēc ar alumīnija pamatni,  tāpēc ka šie ledi silst, un tos vajag labi nodzesēt lai neizdeg. Pamatā vis lampas korpus būs no alumīnija, un ledi tiek pie tā skrūvēti. Lielās alumīnija pcb plāksnes pie kā lodēt čipus neder, jo tiem ir vai nu viens vai maksimums 3 kanāli, kā rezultātā nevaru gaismu izretināt lai tā būtu vienmērīga, nevaru likt visas zilās vienā čupā un blakus baltās.
2. Draiveri. Neder man draiveri kas paredzēti led lentēm un citiem mājas izgaismošanas projektiem. Jo šie 3W ledi ir 700ma, tātad man vajag konkrēti šādas amperāžas draiverus, jo uz katru kanālu būs pa 10 lediem virknē un katrs draiveris dimmēs vienu konkrētu kanālu. Nevienā virkne nebūs nevienas pretestības kā tas ir lentās un citos izstrādājumos.

----------


## karloslv

> off. M_J, wire (I2C) bibliotēka to dara. Nebija līdz šim nācies I2C izmantot. Tikai tā pamēģināju, to HTU izmantošu, bet noteikti pats uzrakstīšu vienkāršu, minimālistisku I2C "draiveri". Jā, un tam wire "kājas" šķiet aug turpat, kur serial.print, šim arī ir funkcijas, kas ļauj stringus raidīt/uztvert. Nu ja, un HTU biblene izmanto float matemātiku.
> 
> Papētīju to Arduino oriģinālo twi.c , kas sēž zem Wire biblenes. Nesaprotu, kāda vella pēc šie izmanto pārtraukuma vektoru, ja gan rakstīšanas gan lasīšanas funkcijā ir kāda "īpaša" rinda -
> 
> 
> ```
>  while(TWI_MRX == twi_state)
> {
>     continue;
> ...


 Jurkin, Arduino bibliotēka nekad nav rakstīta ar mērķi maksimālā veiktspēja, drīzāk - maksimāls ērtums (un arī par to reizēm var pastrīdēties). Reizēm tieši otrais punkts ir svarīgi, jo tas arī galu galā nodrošināja milzīgo popularitāti, jo pēkšņi katrs mākslEnieks varēja uzrakstīt 3 rindiņas un viņam mirgoja LED. Pirms tam taču arī to varēja izdarīt, vai ne? Bija taču Atmel Studio, bija taču 300 lappušu specenes, asemblers un reģistri nebija atcelti  ::  Nu, tā ir smalka līnija, nostaigāt pa vidu tā, kā tev pašam vajag. Gribi ātri un ērti - labi, ka ir tāda Arduino bibliotēka. Gribi pats, ar maksimālu kontroli un izpratni - raksti labāk nu no nulles vai meklē kāda cita līdzīgus centienus.

----------


## sasasa

Bieži vien gatavās bibliotēkas tiek rakstītas universālam pielietojumam. Līdz ar to tiek iekļautas lietas pilnīgi visiem dzīves gadījumiem, kas itin bieži ir tikai traucējošas. Diezgan bieži gatavajās bibliotekās var sastapties ar dažādiem brīnumiem. while ir viens no tādiem, kas laika kritiskos brīžos var radīt problēmas. Es pēdējā laikā cenšos atturēties no gatavajiem bibliotēku risinājumiem, jo dažreiz pietiek tik ar dažām rindiņām konkrētai vajadzībai, tā vietā, lai liktu visu bibliotēku.

----------


## Jurkins

Taisnība. Es arī pamēģināju ar gatavām bibliotēkām, kā tas htu strādā. Es šo noteikti lietošu, bet tikpat noteikti bez Wire.h.

----------


## JDat

kamēr arduino ir hobijs, tikmēr var taisīt savas bibliotēkas. Kad hispterim vajag ātri iedot risinājumu (slepenais prototips histerstartup idejai), tad, atvainojiet, par bibliotēku rakstīšanu neviens nemaksā.

----------


## Jurkins

Pilnīgi piekrītu, man tas ir tīri hobijs, un interesē kā viss notiek. Vienu vakaru pavadīju, lai iebrauktu I2C un uzrakstītu (saprastu) savu realizāciju.

----------


## JDat

Vienkāršs variants kā iebraukt I2, tas ir paņemt MCP3221 ADC mikreni un palasīt saturu. Pēc tam ar diviem arduino pasūtīt datus abos virzienos no gatavajiem paraugiem. Vēl var izmantot MC23017 mikreni priekš mācībām.

Ja ir idejas kā uzrakstīt Wire un TWI labāk, bet nesalaužot savietojamību, tad tas jau ir PRO level un rezultātu var iesniegt arduinistiem caur github. Labas lietas tāpēc arī ir labas lietas, ja tās labi uzraksta un iedod pārējiem.

----------


## sasasa

Nesapratu priekš kā  tur adc vajadzīgs? 
Iesākumam pilnīgi pietiks kautvai ar šo https://www.google.lv/url?sa=t&sourc...aIUahNoz4upWoA

----------


## JDat

lai nolasītu konkrēto adc, vajag tikai nolasīt 16 bit skaitli. elementārs uzdevums. bet tā, interesants dokuments.

----------


## iesācējs

Pirms kāda laika saņēmu savus arduino, pasūtīju nevis UNO, bet nano, cenas deļ, izmērs pārsteidza.
Eksperimentāli master programma tika uzrakstīta uz UNO, kas man jau bija mājās, tam klāt grafiskais displejs, izvēlējos jo šķita ka būs ērtāk lietot kā parastos 2 vai 4 rindiņu, un ja godīgi, tiešam ērti lietot. vadība notiek ar joystick arī ļoti ērti. Kā slave pieslēgts viens nano,   pagaidām gan bez lediem, informāciju pārbaudei palaidu uz serialmonitor un vis darbojās.
tuvākajā laikā pasūtīšu pārējās detaļas, ziņošu kā vis turpinās.

----------


## iesācējs

Lampas pabeigtas! Vis Darbojas. Paldies kas palīdzēja.

----------

