<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=47&amp;t=18341&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-05-06T21:52:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=18341&amp;mode</id>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-06T21:52:12+01:00</updated>
<published>2017-05-06T21:52:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188594#p188594</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188594#p188594"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188594#p188594"><![CDATA[
wpisałem w google wygląda całkiem ładnie ^.^ ale udało mi się w IDE dokończyć i wszystko śmiga <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> jutro wstawię fotki i screeny z blynka<br /><br />EDIT:<br /><br />moderator pewnie miał zagwozdkę czy zostawić w dziale programowanie w C czy przenieść (jak się też stało) do działu Arduino C++ <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 6 maja 2017, o 21:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-06T17:09:55+01:00</updated>
<published>2017-05-06T17:09:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188579#p188579</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188579#p188579"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188579#p188579"><![CDATA[
no teraz już ogarnę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> potem wstawię foto mojego &quot;wynalazku&quot; ale jak na razie IDE przestało działać :/ jak się sypie to już wszystko <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 6 maja 2017, o 17:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-06T15:40:18+01:00</updated>
<published>2017-05-06T15:40:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188572#p188572</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188572#p188572"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188572#p188572"><![CDATA[
<div class="quotetitle">dambo napisał(a):</div><div class="quotecontent"><br />na ardu timer0 jest przeznaczony na &quot;arduinowskie&quot; rzeczy, chociaż niby ich tu nie używasz, ale dla pewności zmień z t0 na t2<br /></div><br /><br />własnie sobie przypominam czemu już nie programuje w IDE <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  zmieniłem OCR0A=15; na OCR0A=20; i działa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> przynajmniej na razie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo skoro mówisz że t0 jest jak by zarezerwowane to może się to zmienić jak już wgram obsługę ethernetu bo tam pewnie będą używane<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 6 maja 2017, o 15:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-06T15:14:07+01:00</updated>
<published>2017-05-06T15:14:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188569#p188569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188569#p188569"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188569#p188569"><![CDATA[
<div class="quotetitle">dambo napisał(a):</div><div class="quotecontent"><br />daj przykład bo teraz można tylko gdybać<br /></div><br />już sobie z tym poradziłem. Jakoś to przeimportowałem... tylko teraz timer nie działa a jak miałem napisane w eclipse to działał z takimi samymi nastawieniami. Ogólnie mogę wstawić kod tylko jest straszny bo nie wiem jak dodać biblioteki do IDE. Zrobiłem jakoś że NIBY czytał - przynajmniej nie wywalał że nie ma- ale i tak nie chciał nic z nich sobie zabrać więc chamsko wsadziłem wszystko do &quot;jednego worka&quot;.<br /><br />tutaj kod prosto z IDE:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;util/delay.h&gt;<br />#define B (1&lt;&lt;PC0)<br />#define A (1&lt;&lt;PC1)<br />#define SW (1&lt;&lt;PD3)<br />#define LED (1&lt;&lt;PC5)   // port zmiany led<br />#define BUZZ (1&lt;&lt;PC4)<br />#define _1WPORTC<br />#define _1WPINC<br />#define _1WSLOT(1&lt;&lt;3)<br />#define _1W_WE{ (PINC &amp; _1WSLOT); }<br /><br /><br />#define _1W_SET_0(){ DDRC |= 0x08; }//PC.0 jako wyjście,<br />//PC.0 = 0, więc stan na linii wynosi 0<br />#define _1W_SET_1(){ DDRC &amp;= 0xF7;}//PC.0 jako wejście,<br />#define HC595_PORT   PORTD<br />#define HC595_DDR    DDRD<br />#define HC595_SER_POS PD7   //Data pin (DS) pin location<br />#define up 10<br />#define down 11<br /><br /><br />#define HC595_SCK_POS PD6     //Shift Clock (SH_CP) pin location<br />#define HC595_LAT_POS PD5     //Store Clock (ST_CP) pin location<br />#define FOSC 16000000                  // prędkośc taktowania do obliczenia MYUBRR<br />#define BAUD 9600   // prędkośc opróbkownia<br />#define MYUBRR FOSC/16/BAUD-1<br />#define HC595DataHigh() (HC595_PORT|=(1&lt;&lt;HC595_SER_POS))<br /><br />#define HC595DataLow() (HC595_PORT&amp;=(~(1&lt;&lt;HC595_SER_POS)))<br /><br />extern volatile char bufor&#91;10&#93;;//bufor odbioru danych<br />extern volatile int _bufor, bufor_ready,_buf;  // status bufora<br />extern volatile char pomoc;// zmienna pomocnicza<br />extern int temp_int;<br />extern float temp_float;<br />volatile int lock;<br /> int val, val_tmp ;<br /> uint16_t key_lock=1;<br /> float g=40.1;<br />uint8_t buzz;<br /><br />inline void UART_TO_NUM (void)<br />{<br />int D = bufor&#91;0&#93; - 48;<br />int J = bufor&#91;1&#93; - 48;<br />temp_int = 10*D + J;<br />temp_float= temp_int+(bufor&#91;3&#93;-48)*0.1;<br />}<br /><br />void USART_Init( unsigned int ubrr)<br />{<br />/*Set baud rate */<br /> UBRR0H = (unsigned char)(ubrr&gt;&gt;8);<br /> UBRR0L = (unsigned char)ubrr;<br /> //Enable receiver and transmitter<br /> UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0);<br /> /* Set frame format: 8data, 1stop bit */<br /> UCSR0C =(3&lt;&lt;UCSZ00);<br /> UCSR0B |=(1&lt;&lt;RXCIE0);<br /> }<br /><br />unsigned char uart_recieve (void)<br />{<br />    while(~(UCSR0A) &amp; (1&lt;&lt;RXC0));                   // wait while data is being received<br />    return UDR0;                                   // return 8-bit data<br />}<br />volatile char bufor&#91;10&#93;;<br />volatile int _bufor=0, bufor_ready=0,_buf;  // status bufora<br />int temp_int;<br />float temp_float;<br />volatile uint8_t cy,cy1,cy2,cy3,cy4,cy5,cy6,cy7,cy8;<br />uint8_t led_pattern&#91;12&#93;={ /*<br />  *  ___g___<br />  *<br />  * |       |<br />  * |b      |f<br />  * |___a___|<br />  * |       |<br />  * |c      |e<br />  *  ___d___  o  */<br /> //  oabcdefg<br />   0b10111111,  // 0<br />   0b10000110,  // 1<br />   0b11011011,  // 2<br />   0b11001111,  // 3<br />   0b11100110,  // 4<br />   0b11101101,  // 5<br />   0b11111101,  // 6<br />   0b10000111,  // 7<br />   0b11111111,  // 8<br />   0b11101111,  // 9<br />   0b00100001, // rosnie<br />   0b00001100  //maleje<br />                    };<br /><br />void cyfra(uint8_t zmienna)<br /> {<br />switch (zmienna)<br />{<br />case 0:<br />HC595Write(  led_pattern&#91;0&#93;);<br /><br />break;<br />case 1:<br />HC595Write(  led_pattern&#91;1&#93;);<br /><br />break;<br />case 2:<br />HC595Write(  led_pattern&#91;2&#93;);<br /><br />break;<br />case 3:<br />HC595Write(  led_pattern&#91;3&#93;);<br /><br />break;<br />case 4:<br />HC595Write(  led_pattern&#91;4&#93;);<br /><br />break;<br />case 5:<br />HC595Write(  led_pattern&#91;5&#93;);<br /><br />break;<br />case 6:<br />HC595Write(  led_pattern&#91;6&#93;);<br /><br />break;<br />case 7:<br />HC595Write(  led_pattern&#91;7&#93;);<br /><br />break;<br />case 8:<br />HC595Write(  led_pattern&#91;8&#93;);<br /><br />break;<br />case 9:<br />HC595Write(  led_pattern&#91;9&#93;);<br /><br />break;<br />case 10:<br />HC595Write(  led_pattern&#91;10&#93;);<br /><br />break;<br />case 11:<br />HC595Write(  led_pattern&#91;11&#93;);<br /><br />break;<br />case 12:<br />HC595Write(  led_pattern&#91;5&#93;);  //S<br />break;<br />case 13:<br />HC595Write (   0b01111001);<br />break;//E<br />case 14:<br />HC595Write(   0b01111000 );<br />break;//t<br />}}<br /><br />void HC595Init()<br />{<br />   //Make the Data(DS), Shift clock (SH_CP), Store Clock (ST_CP) lines output<br />   HC595_DDR|=((1&lt;&lt;HC595_SCK_POS)|(1&lt;&lt; HC595_LAT_POS)|(1&lt;&lt;HC595_SER_POS));<br />}<br /><br />void HC595Pulse()<br />{<br />   //Pulse the Shift Clock<br /><br />   HC595_PORT|=(1&lt;&lt;HC595_SCK_POS);//HIGH<br /><br />   HC595_PORT&amp;=(~(1&lt;&lt;HC595_SCK_POS));//LOW<br /><br />}<br /><br />//Sends a clock pulse on ST_CP line<br />void HC595Latch()<br />{<br />   //Pulse the Store Clock<br /><br />   HC595_PORT|=(1&lt;&lt; HC595_LAT_POS);//HIGH<br />  // _delay_loop_1(1);<br /><br />   HC595_PORT&amp;=(~(1&lt;&lt; HC595_LAT_POS));//LOW<br />  // _delay_loop_1(1);<br />}<br /><br />void update(){<br />switch(cy)<br />{<br />case 0:<br />HC595Write(1);<br />cyfra(cy1);<br />cy++;<br /><br />break;<br />case 1:<br />HC595Write(2);<br />cyfra(cy2);<br />cy++;<br /><br />break;<br />case 2:<br />HC595Write(4);<br />cyfra(cy3);<br />HC595Latch();<br />cy++;<br /><br />break;<br />case 3:<br />HC595Write(8);<br />cyfra(cy4);<br />cy++;<br />break;<br />case 4:<br />HC595Write(16);<br />cyfra(cy5);<br />cy++;<br />break;<br />case 5:<br />HC595Write(32);<br />cyfra(cy6);<br />cy++;<br />break;<br />case 6:<br />HC595Write(64);<br />cyfra(cy7);<br />cy++;<br />break;<br />case 7:<br />HC595Write(128);<br />cyfra(cy8);<br />cy=0;<br />break;}<br />HC595Latch();<br />}<br /><br />/*<br /><br />Main High level function to write a single byte to<br />Output shift register 74HC595.<br /><br />Arguments:<br />   single byte to write to the 74HC595 IC<br /><br />Returns:<br />   NONE<br /><br />Description:<br />   The byte is serially transfered to 74HC595<br />   and then latched. The byte is then available on<br />   output line Q0 to Q7 of the HC595 IC.<br /><br />*/<br />void HC595Write(uint8_t data)<br />{<br />   //Send each 8 bits serially<br /><br />   //Order is MSB first<br />   for(uint8_t i=0;i&lt;8;i++)<br />   {<br />      //Output the data on DS line according to the<br />      //Value of MSB<br />      if(data &amp; 0b10000000)<br />      {<br />         //MSB is 1 so output high<br /><br />         HC595DataHigh();<br />      }<br />      else<br />      {<br />         //MSB is 0 so output high<br />         HC595DataLow();<br />      }<br /><br />      HC595Pulse();  //Pulse the Clock line<br />      data=data&lt;&lt;1;  //Now bring next bit at MSB position<br /><br />   }<br /><br />   //Now all 8 bits have been transferred to shift register<br />   //Move them to output latch at one<br />}<br />//---------------------------------------------<br />//waitus() Dla zegara 4MHz, funkcja odmierza<br />//tyle mikrosekund, co podany parametr tau<br />//---------------------------------------------<br /><br />float b,c,a;<br />float volatile dstemp;<br />uint8_t data1;<br />//---------------------------------------------<br />//_1WireInit Funkcja inicjalizująca 1Wire<br />//funkcja zwraca:0-nic nie wykryto<br />//1-wykryto urządzenie<br />//2-wykryto zwarcie<br />//---------------------------------------------<br />uint8_t _1WireInit( void )<br />{<br />uint8_t InitVal=0;<br /><br />_1W_SET_0();//stan 0 na linii<br />_delay_us(200);//opóźnienie 500us<br />update();<br />_1W_SET_1();//stan 1 na linii<br />_delay_us(65);<br />if(!(_1W_WE))//równoznaczne z if(!(PINB &amp; 0x01)), patrz makro w 1Wire.h<br />InitVal++;<br />//_delay_us(220);<br />_delay_us(236);//czekaj 416us do końca inicjalizacji<br />update();<br />if(!(_1W_WE))//jeśli nadal PinB.0 = 0, zwarcie<br />InitVal++;<br />return InitVal;//zwraca: 0-nic, 1-pastylka, 2-zwarcie<br />}<br /><br />//---------------------------------------------<br />//_1WireWriteSlot Slot zapisu bitu<br />//---------------------------------------------<br />void _1WireWriteSlot(uint8_t bit)<br />{<br />if(bit)//Write 1<br />{<br />_1W_SET_0();<br />_delay_us(11);<br />_1W_SET_1();<br />_delay_us(60);<br />}<br />else//Write 0<br />{<br />_1W_SET_0();<br />_delay_us(70);<br />_1W_SET_1();<br />//waitus(3);<br />}<br />}<br /><br />//---------------------------------------------<br />//_1WireReadSlot Slot odczytu bitu<br />//---------------------------------------------<br />uint8_t _1WireReadSlot(void)<br />{<br />uint8_t _bit=0;<br />_1W_SET_0();//ustaw 0<br />_delay_us(1);<br />_1W_SET_1();//zwolnij magistralę, stan H z rezystora PullUp<br />_delay_us(14);<br />_bit = (_1W_WE);//zwróć wartość PinB.0, 1 lub 0<br />_delay_us(60);<br />return _bit;<br />}<br /><br />//---------------------------------------------<br />//_1WireWriteByte Funkcja wysyłająca cały<br />//bajt danych na magistralę<br />//---------------------------------------------<br />void _1WireWriteByte(uint8_t dana)<br />{<br />uint8_t i;<br />for(i=0; i&lt;8; i++)<br />{<br />_1WireWriteSlot( dana &amp; 0x01 );//wyślij 1 lub 0<br />dana &gt;&gt;= 1;<br />}<br />}<br /><br />//---------------------------------------------<br />//_1WireReadByte Funkcja zwracająca odczytany<br />//bajt danych z magistrali<br />//---------------------------------------------<br />uint8_t _1WireReadByte(void)<br />{<br />uint8_t i;<br />uint8_t data=0;<br /><br />for(i=0x01; i!=0; i&lt;&lt;=1)//za każdym obiegiem, przesuń jedynkę w lewo odpowiada<br />{//pozycjom zczytanej wartości (czytamy od LSB do MSB)<br />if( _1WireReadSlot() )//jeśli _1WireReadSlot() odczytał 1<br />data |= i;//umieść 1 na odpowiedniej pozycji<br />}<br />return data;<br />}<br /><br />//---------------------------------------------<br />//_1WCalcCRC Wyliczanie CRC danych, funkcja<br />//zapożyczona z książki &quot;Mikrokontrolery AVR<br />//w praktyce&quot; J. Doliński<br />//---------------------------------------------<br />void _1WCalcCRC(uint8_t bajt,uint8_t *CRC)      //procedura wyliczania CRC<br />{                  //wielomian generujący jest równy: x^8 + x^5 + x^4 + 1<br /> uint8_t zp1,zp2,i;    //zmienne pomocnicze<br /><br /> zp1=bajt;<br /> for(i=0;i&lt;8;i++)<br /> {<br />  bajt^=*CRC;           //wskaźnik *CRC wyznacza aktualnie wyliczony CRC<br />  zp2=bajt&amp;0x01;        //wydzielenie bitu do obliczeń<br />  bajt=*CRC;<br />  if(zp2)<br />  {<br />   bajt^=0x18;<br />  }<br />  bajt=((uint8_t)(bajt)&gt;&gt;1)+0x80*zp2; //konwersja uch jest potrzebna do<br />                                            //prawidłowego wykonania przesunięcia <br />  *CRC=bajt;<br />  zp1=(bajt=zp1&gt;&gt;1);    <br /> }<br />}<br />//---------------------------------------------<br />//_1WCheckCRC funkcja liczy CRC, argumenty:<br />//wskaźnik do tablicy z odczytanymi danymi<br />//oraz wielkość tablicy, jeśli CRC się zgadza<br />//funkcja zwróci 0x00<br />//---------------------------------------------<br />uint8_t _1WCheckCRC( uint8_t *ptr, uint8_t size )<br />{<br />uint8_t CRC=0;<br />for(uint8_t i=0; i&lt;size; i++)<br />{<br />_1WCalcCRC(ptr&#91;i&#93;,&amp;CRC);<br />}<br />return CRC;<br />}<br /><br />float DS18B20_temp(void)<br />{<br /><br />//INICJALIZACJA<br />_1WireInit();<br />uint8_t tempH, tempL;<br />uint16_t temp;<br /><br />_1WireWriteByte(0xCC);<br />_1WireWriteByte(0x44);<br />//odczekać min 750ms<br /><br />_1WireInit();<br />_1WireWriteByte(0xCC);<br />_1WireWriteByte(0xBE);<br />tempL = _1WireReadByte();<br />tempH = _1WireReadByte();<br />temp = (((int16_t)tempH) &lt;&lt; 8) | tempL;<br />return (float)temp *  0.0625 ;   //0.0625;<br />//return (float)(temp &gt;&gt; 1) * 0.138;   //0.125;<br />// return (float)(temp &gt;&gt; 2) * 0.273;<br />//return (float)(temp &gt;&gt; 3) * 0.5;<br /><br /><br />}<br /><br />void SOUND(void)<br />{<br />static uint8_t k=0;<br />k++;<br />if (temp_float &lt;=  g )<br />{<br />if (k==10)<br />PORTC&amp;=~LED;<br />if (buzz==0)<br />{<br />PORTC^=BUZZ;<br />_delay_ms(100);<br />PORTC^=BUZZ;<br />_delay_ms(100);<br />PORTC^=BUZZ;<br />_delay_ms(100);<br />PORTC^=BUZZ;<br />buzz++;<br />}<br />}<br /><br />else if  (temp_float &gt; g)                // w każdej innej styucaji zapal niebieską i zezwól na sygnal<br />{<br />buzz=0;<br />if (k==100)<br />PORTC|=LED;<br />}<br />}<br /><br />ISR(USART_RX_vect)<br />{<br />if(!bufor_ready)<br />{<br />update();<br />bufor&#91;_bufor&#93;= UDR0;<br />if( bufor&#91;_bufor&#93; == '\n' )<br />{<br />_buf=_bufor;<br />_bufor= 0;<br />//bufor_ready= 1;<br />}<br />else<br />{<br />_bufor++;<br />}<br />static int licznik=0;<br />if (licznik == 15){<br />dstemp =  DS18B20_temp();<br />licznik=0;}<br />licznik++;<br />}<br />}<br /><br />/////////////////////////////////////////////////////////////////////////////////////////////<br /><br />ISR(TIMER0_COMPA_vect)<br />{<br /><br />update();<br />PORTC^=BUZZ;<br />}<br /><br />///////////////////////////////////////////////////////////////////////////////////////////<br /><br />ISR(INT1_vect) {<br />static int licznik=0;<br />if (licznik==0 &amp;&amp; !(PIND &amp; SW)){<br />lock=1; licznik++;<br />}<br />else if (licznik != 0 &amp;&amp; !(PIND &amp; SW)){<br />lock=0;licznik=0;}<br /><br />}<br /><br />uint8_t read_gray_code_from_encoder(void )<br />{<br /> uint8_t val=0;<br /><br />  if((PINC&amp; A))<br />val |= (1&lt;&lt;1);<br /><br />  if((PINC &amp; B))<br />val |= (1&lt;&lt;0);<br /><br />  return val;<br />}<br />void setup() {<br />noInterrupts();  <br />TCCR0A|= (1&lt;&lt;WGM01);<br />TCCR0B|= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);<br />OCR0A=15;<br />TIMSK0|=(1&lt;&lt;OCIE0A);<br />interrupts(); <br />}<br /><br />void loop() {<br />    DDRD |= SW;<br />//_1WireInit();<br />buzz=0;<br /> _delay_ms(100);<br />USART_Init(MYUBRR);<br />HC595Init();<br /><br />DDRD |= SW;<br />EICRA|=(1&lt;&lt;ISC11);<br />EIMSK|=(1&lt;&lt;INT1);<br />val = read_gray_code_from_encoder();<br /><br />DDRC |= LED;<br />DDRC |= A;<br />DDRC |= B;<br />PORTC|=A;<br />PORTC|=B;<br />DDRC |= BUZZ;<br /><br />buzz=0;<br />dstemp =  DS18B20_temp();<br />  char TEMP&#91;10&#93;;<br />  while(1){<br />   while(lock==0)<br />    {<br />      <br />dtostrf(dstemp, 6, 3, TEMP);<br />int rosnie;<br /><br /><br /><br />cy6=TEMP&#91;0&#93;-48;<br />cy7=TEMP&#91;1&#93;-48;<br />cy8=TEMP&#91;3&#93;-48;<br /> if (b&gt;a)<br />  {cy5=down;rosnie = 0;}<br />else if (b&lt;a)<br /> {cy5=up;rosnie = 1;}<br />else if (b==a)<br /> {<br /> if(rosnie==1)<br />{cy5=down;}<br />if(rosnie==0)<br />{cy5=down;}<br /> }<br />cy2=bufor&#91;0&#93; - 48;<br />cy3=bufor&#91;1&#93; - 48;<br />cy4=bufor&#91;3&#93; - 48;<br /><br />UART_TO_NUM ();<br /><br />int maleje;<br />if (c&gt;temp_float)<br />{cy1=down; maleje = 1;}<br />else if (c&lt;temp_float)<br />{cy1=up; maleje = 0;}<br />else if (c==temp_float)<br />{<br />if(maleje==1)<br />   {cy1=down;}<br />if(maleje==0)<br />    {cy1=up;}<br /> }<br />SOUND();<br /><br /><br />c=temp_float;<br />     }<br />    while (lock==1)<br />    {<br /><br />    cy2=12;<br />    cy3=13;<br />    cy4=14;<br />    int G=g;<br />    int c7=G%10;<br />    int c6=(G-c7)/10;<br />    int c8=(g*10)-(G*10);<br />    cy6=c6;<br />    cy7=c7;<br />    cy8=c8;<br />     PORTC^=LED;<br /><br />     val_tmp = read_gray_code_from_encoder();<br />        if(val != val_tmp)<br />        {<br />        if( /*(val==2 &amp;&amp; val_tmp==3) ||*/<br />        (val==3 &amp;&amp; val_tmp==1) ||<br />        /*(val==1 &amp;&amp; val_tmp==0) ||*/<br />        (val==0 &amp;&amp; val_tmp==2)<br />      )<br />        {<br />     g=g-0.05;<br />        }<br />        else if( /*(val==3 &amp;&amp; val_tmp==2) ||*/<br />        (val==2 &amp;&amp; val_tmp==0) ||<br />        /*(val==0 &amp;&amp; val_tmp==1) ||*/<br />        (val==1 &amp;&amp; val_tmp==3)<br />      )<br />        {<br />     g=g+0.05;<br />        }<br /><br />        val = val_tmp;<br />        }<br /><br />    }<br />}}[/syntax]<br /><br />a tutaj po kolei jak mam w Eclipse:<br /><br />1Wire.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;1Wire.h&quot;<br />#include &quot;HC595.h&quot;<br /><br />//Definicje portów w pliku 1Wire.h<br /><br /><br />//---------------------------------------------<br />//waitus() Dla zegara 4MHz, funkcja odmierza<br />//tyle mikrosekund, co podany parametr tau<br />//---------------------------------------------<br /><br />float b,c,a;<br />float volatile dstemp;<br />uint8_t data1;<br />//---------------------------------------------<br />//_1WireInit Funkcja inicjalizująca 1Wire<br />//funkcja zwraca:0-nic nie wykryto<br />//1-wykryto urządzenie<br />//2-wykryto zwarcie<br />//---------------------------------------------<br />uint8_t _1WireInit( void )<br />{<br />uint8_t InitVal=0;<br /><br />_1W_SET_0();//stan 0 na linii<br />_delay_us(200);//opóźnienie 500us<br />update();<br />_1W_SET_1();//stan 1 na linii<br />_delay_us(65);<br />if(!(_1W_WE))//równoznaczne z if(!(PINB &amp; 0x01)), patrz makro w 1Wire.h<br />InitVal++;<br />//_delay_us(220);<br />_delay_us(236);//czekaj 416us do końca inicjalizacji<br />update();<br />if(!(_1W_WE))//jeśli nadal PinB.0 = 0, zwarcie<br />InitVal++;<br />return InitVal;//zwraca: 0-nic, 1-pastylka, 2-zwarcie<br />}<br /><br />//---------------------------------------------<br />//_1WireWriteSlot Slot zapisu bitu<br />//---------------------------------------------<br />void _1WireWriteSlot(uint8_t bit)<br />{<br />if(bit)//Write 1<br />{<br />_1W_SET_0();<br />_delay_us(11);<br />_1W_SET_1();<br />_delay_us(60);<br />}<br />else//Write 0<br />{<br />_1W_SET_0();<br />_delay_us(70);<br />_1W_SET_1();<br />//waitus(3);<br />}<br />}<br /><br />//---------------------------------------------<br />//_1WireReadSlot Slot odczytu bitu<br />//---------------------------------------------<br />uint8_t _1WireReadSlot(void)<br />{<br />uint8_t _bit=0;<br />_1W_SET_0();//ustaw 0<br />_delay_us(1);<br />_1W_SET_1();//zwolnij magistralę, stan H z rezystora PullUp<br />_delay_us(14);<br />_bit = (_1W_WE);//zwróć wartość PinB.0, 1 lub 0<br />_delay_us(60);<br />return _bit;<br />}<br /><br />//---------------------------------------------<br />//_1WireWriteByte Funkcja wysyłająca cały<br />//bajt danych na magistralę<br />//---------------------------------------------<br />void _1WireWriteByte(uint8_t dana)<br />{<br />uint8_t i;<br />for(i=0; i&lt;8; i++)<br />{<br />_1WireWriteSlot( dana &amp; 0x01 );//wyślij 1 lub 0<br />dana &gt;&gt;= 1;<br />}<br />}<br /><br />//---------------------------------------------<br />//_1WireReadByte Funkcja zwracająca odczytany<br />//bajt danych z magistrali<br />//---------------------------------------------<br />uint8_t _1WireReadByte(void)<br />{<br />uint8_t i;<br />uint8_t data=0;<br /><br />for(i=0x01; i!=0; i&lt;&lt;=1)//za każdym obiegiem, przesuń jedynkę w lewo odpowiada<br />{//pozycjom zczytanej wartości (czytamy od LSB do MSB)<br />if( _1WireReadSlot() )//jeśli _1WireReadSlot() odczytał 1<br />data |= i;//umieść 1 na odpowiedniej pozycji<br />}<br />return data;<br />}<br /><br />//---------------------------------------------<br />//_1WCalcCRC Wyliczanie CRC danych, funkcja<br />//zapożyczona z książki &quot;Mikrokontrolery AVR<br />//w praktyce&quot; J. Doliński<br />//---------------------------------------------<br />void _1WCalcCRC(uint8_t bajt,uint8_t *CRC)      //procedura wyliczania CRC<br />{                  //wielomian generujący jest równy: x^8 + x^5 + x^4 + 1<br /> uint8_t zp1,zp2,i;    //zmienne pomocnicze<br /><br /> zp1=bajt;<br /> for(i=0;i&lt;8;i++)<br /> {<br />  bajt^=*CRC;           //wskaźnik *CRC wyznacza aktualnie wyliczony CRC<br />  zp2=bajt&amp;0x01;        //wydzielenie bitu do obliczeń<br />  bajt=*CRC;<br />  if(zp2)<br />  {<br />   bajt^=0x18;<br />  }<br />  bajt=((uint8_t)(bajt)&gt;&gt;1)+0x80*zp2; //konwersja uch jest potrzebna do<br />                                            //prawidłowego wykonania przesunięcia <br />  *CRC=bajt;<br />  zp1=(bajt=zp1&gt;&gt;1);    <br /> }<br />}<br />//---------------------------------------------<br />//_1WCheckCRC funkcja liczy CRC, argumenty:<br />//wskaźnik do tablicy z odczytanymi danymi<br />//oraz wielkość tablicy, jeśli CRC się zgadza<br />//funkcja zwróci 0x00<br />//---------------------------------------------<br />uint8_t _1WCheckCRC( uint8_t *ptr, uint8_t size )<br />{<br />uint8_t CRC=0;<br />for(uint8_t i=0; i&lt;size; i++)<br />{<br />_1WCalcCRC(ptr&#91;i&#93;,&amp;CRC);<br />}<br />return CRC;<br />}<br /><br />float DS18B20_temp(void)<br />{<br /><br />//INICJALIZACJA<br />_1WireInit();<br />uint8_t tempH, tempL;<br />uint16_t temp;<br /><br />_1WireWriteByte(0xCC);<br />_1WireWriteByte(0x44);<br />//odczekać min 750ms<br /><br />_1WireInit();<br />_1WireWriteByte(0xCC);<br />_1WireWriteByte(0xBE);<br />tempL = _1WireReadByte();<br />tempH = _1WireReadByte();<br />temp = (((int16_t)tempH) &lt;&lt; 8) | tempL;<br />return (float)temp *  0.0625 ;   //0.0625;<br />//return (float)(temp &gt;&gt; 1) * 0.138;   //0.125;<br />// return (float)(temp &gt;&gt; 2) * 0.273;<br />//return (float)(temp &gt;&gt; 3) * 0.5;<br /><br /><br />}[/syntax]<br /><br />1Wire.h<br />[syntax=c]#ifndef IWIRE_H_INCLUDED<br />#define IWIRE_H_INCLUDED<br /><br />#define _1WPORTC<br />#define _1WPINC<br />#define _1WSLOT(1&lt;&lt;3)<br />#define _1W_WE{ (PINC &amp; _1WSLOT); }<br /><br /><br />#define _1W_SET_0(){ DDRC |= 0x08; }//PC.0 jako wyjście,<br />//PC.0 = 0, więc stan na linii wynosi 0<br />#define _1W_SET_1(){ DDRC &amp;= 0xF7;}//PC.0 jako wejście,<br />//stan 1 pochodzi z rezystora PullUp<br />extern float a,b,c;<br />uint8_t_1WireInit( void );<br />void_1WireWriteByte(uint8_t dana);<br />uint8_t_1WireReadByte(void);<br />void _1WCalcCRC(uint8_t bajt,uint8_t *CRC);<br />uint8_t_1WCheckCRC( uint8_t *ptr, uint8_t size );<br />uint8_t data1;<br /><br />extern float b,c,a;<br />extern volatile float dstemp;<br />//poniższe dwie funkcje są używane tylko<br />//w pliku 1Wire.c nie potrzeba ich na zewnątrz<br />//void_1WireWriteSlot(uint8_t bit);<br />//uint8_t_1WireReadSlot(void);<br /><br />#endif[/syntax]<br /><br />HC595.c<br />[syntax=c]#include &quot;HC595.h&quot;<br /><br />volatile uint8_t cy,cy1,cy2,cy3,cy4,cy5,cy6,cy7,cy8;<br />uint8_t led_pattern&#91;12&#93;={ /*<br />  *  ___g___<br />  *<br />  * |       |<br />  * |b      |f<br />  * |___a___|<br />  * |       |<br />  * |c      |e<br />  *  ___d___  o  */<br /> //  oabcdefg<br />   0b10111111,  // 0<br />   0b10000110,  // 1<br />   0b11011011,  // 2<br />   0b11001111,  // 3<br />   0b11100110,  // 4<br />   0b11101101,  // 5<br />   0b11111101,  // 6<br />   0b10000111,  // 7<br />   0b11111111,  // 8<br />   0b11101111,  // 9<br />   0b00100001, // rosnie<br />   0b00001100  //maleje<br />                    };<br /><br />void cyfra(uint8_t zmienna)<br /> {<br />switch (zmienna)<br />{<br />case 0:<br />HC595Write(  led_pattern&#91;0&#93;);<br /><br />break;<br />case 1:<br />HC595Write(  led_pattern&#91;1&#93;);<br /><br />break;<br />case 2:<br />HC595Write(  led_pattern&#91;2&#93;);<br /><br />break;<br />case 3:<br />HC595Write(  led_pattern&#91;3&#93;);<br /><br />break;<br />case 4:<br />HC595Write(  led_pattern&#91;4&#93;);<br /><br />break;<br />case 5:<br />HC595Write(  led_pattern&#91;5&#93;);<br /><br />break;<br />case 6:<br />HC595Write(  led_pattern&#91;6&#93;);<br /><br />break;<br />case 7:<br />HC595Write(  led_pattern&#91;7&#93;);<br /><br />break;<br />case 8:<br />HC595Write(  led_pattern&#91;8&#93;);<br /><br />break;<br />case 9:<br />HC595Write(  led_pattern&#91;9&#93;);<br /><br />break;<br />case 10:<br />HC595Write(  led_pattern&#91;10&#93;);<br /><br />break;<br />case 11:<br />HC595Write(  led_pattern&#91;11&#93;);<br /><br />break;<br />case 12:<br />HC595Write(  led_pattern&#91;5&#93;);  //S<br />break;<br />case 13:<br />HC595Write (   0b01111001);<br />break;//E<br />case 14:<br />HC595Write(   0b01111000 );<br />break;//t<br />}}<br /><br />void HC595Init()<br />{<br />   //Make the Data(DS), Shift clock (SH_CP), Store Clock (ST_CP) lines output<br />   HC595_DDR|=((1&lt;&lt;HC595_SCK_POS)|(1&lt;&lt; HC595_LAT_POS)|(1&lt;&lt;HC595_SER_POS));<br />}<br /><br />void HC595Pulse()<br />{<br />   //Pulse the Shift Clock<br /><br />   HC595_PORT|=(1&lt;&lt;HC595_SCK_POS);//HIGH<br /><br />   HC595_PORT&amp;=(~(1&lt;&lt;HC595_SCK_POS));//LOW<br /><br />}<br /><br />//Sends a clock pulse on ST_CP line<br />void HC595Latch()<br />{<br />   //Pulse the Store Clock<br /><br />   HC595_PORT|=(1&lt;&lt; HC595_LAT_POS);//HIGH<br />  // _delay_loop_1(1);<br /><br />   HC595_PORT&amp;=(~(1&lt;&lt; HC595_LAT_POS));//LOW<br />  // _delay_loop_1(1);<br />}<br /><br />void update(){<br />switch(cy)<br />{<br />case 0:<br />HC595Write(1);<br />cyfra(cy1);<br />cy++;<br /><br />break;<br />case 1:<br />HC595Write(2);<br />cyfra(cy2);<br />cy++;<br /><br />break;<br />case 2:<br />HC595Write(4);<br />cyfra(cy3);<br />HC595Latch();<br />cy++;<br /><br />break;<br />case 3:<br />HC595Write(8);<br />cyfra(cy4);<br />cy++;<br />break;<br />case 4:<br />HC595Write(16);<br />cyfra(cy5);<br />cy++;<br />break;<br />case 5:<br />HC595Write(32);<br />cyfra(cy6);<br />cy++;<br />break;<br />case 6:<br />HC595Write(64);<br />cyfra(cy7);<br />cy++;<br />break;<br />case 7:<br />HC595Write(128);<br />cyfra(cy8);<br />cy=0;<br />break;}<br />HC595Latch();<br />}<br /><br />/*<br /><br />Main High level function to write a single byte to<br />Output shift register 74HC595.<br /><br />Arguments:<br />   single byte to write to the 74HC595 IC<br /><br />Returns:<br />   NONE<br /><br />Description:<br />   The byte is serially transfered to 74HC595<br />   and then latched. The byte is then available on<br />   output line Q0 to Q7 of the HC595 IC.<br /><br />*/<br />void HC595Write(uint8_t data)<br />{<br />   //Send each 8 bits serially<br /><br />   //Order is MSB first<br />   for(uint8_t i=0;i&lt;8;i++)<br />   {<br />      //Output the data on DS line according to the<br />      //Value of MSB<br />      if(data &amp; 0b10000000)<br />      {<br />         //MSB is 1 so output high<br /><br />         HC595DataHigh();<br />      }<br />      else<br />      {<br />         //MSB is 0 so output high<br />         HC595DataLow();<br />      }<br /><br />      HC595Pulse();  //Pulse the Clock line<br />      data=data&lt;&lt;1;  //Now bring next bit at MSB position<br /><br />   }<br /><br />   //Now all 8 bits have been transferred to shift register<br />   //Move them to output latch at one<br />}[/syntax]<br /><br />HC595.h<br />[syntax=c]/*<br /> * HC595.h<br /> *<br /> *  Created on: 6 lut 2017<br /> *      Author: novo<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#ifndef HC595_H_<br />#define HC595_H_<br /><br /><br />#define HC595_PORT   PORTD<br />#define HC595_DDR    DDRD<br />#define HC595_SER_POS PD7   //Data pin (DS) pin location<br />#define up 10<br />#define down 11<br /><br /><br />#define HC595_SCK_POS PD6     //Shift Clock (SH_CP) pin location<br />#define HC595_LAT_POS PD5     //Store Clock (ST_CP) pin location<br /><br />void HC595Init();<br />void cyfra(uint8_t zmienna);<br />void update();<br />#define HC595DataHigh() (HC595_PORT|=(1&lt;&lt;HC595_SER_POS))<br /><br />#define HC595DataLow() (HC595_PORT&amp;=(~(1&lt;&lt;HC595_SER_POS)))<br /><br />extern volatile uint8_t cy,cy1,cy2,cy3,cy4,cy5,cy6,cy7,cy8;<br />extern uint8_t led_pattern&#91;12&#93;;<br />void HC595Pulse();<br />void HC595Latch();<br />void HC595Write(uint8_t data);<br /><br /><br />#endif /* HC595_H_ */[/syntax]<br /><br />UART.c<br />[syntax=c]#include &quot;UART.h&quot;<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />volatile char bufor&#91;10&#93;;//bufor odbioru danych<br />volatile int _bufor=0, bufor_ready=0,_buf;  // status bufora<br />volatile char i;// zmienna pomocnicza<br />int temp_int;<br />float temp_float;<br /><br />inline void UART_TO_NUM (void)<br />{<br />int D = bufor&#91;0&#93; - 48;<br />int J = bufor&#91;1&#93; - 48;<br />temp_int = 10*D + J;<br />temp_float= temp_int+(bufor&#91;3&#93;-48)*0.1;<br />}<br /><br />void USART_Init( unsigned int ubrr)<br />{<br />/*Set baud rate */<br /> UBRR0H = (unsigned char)(ubrr&gt;&gt;8);<br /> UBRR0L = (unsigned char)ubrr;<br /> //Enable receiver and transmitter<br /> UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0);<br /> /* Set frame format: 8data, 1stop bit */<br /> UCSR0C =(3&lt;&lt;UCSZ00);<br /> UCSR0B |=(1&lt;&lt;RXCIE0);<br /> }<br /><br />unsigned char uart_recieve (void)<br />{<br />    while(~(UCSR0A) &amp; (1&lt;&lt;RXC0));                   // wait while data is being received<br />    return UDR0;                                   // return 8-bit data<br />}[/syntax]<br /><br />UART.h - zanim się doczepicie i napiszecie dużymi literami NIE UŻYWAJ FOSC!!! normalnie nie używam ale tutaj był i tak potrzebny do BAUD więc jak coś zmienię w projekcie i tak by się posypał <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> zrobiłem to w pełni świadomie<br />[syntax=c]#ifndef UART_H_<br />#define UART_H_<br /><br />#define FOSC 16000000                  // prędkośc taktowania do obliczenia MYUBRR<br />#define BAUD 9600   // prędkośc opróbkownia<br />#define MYUBRR FOSC/16/BAUD-1<br /><br />extern volatile char bufor&#91;10&#93;;//bufor odbioru danych<br />extern volatile int _bufor, bufor_ready,_buf;  // status bufora<br />extern volatile char i;// zmienna pomocnicza<br />extern int temp_int;<br />extern float temp_float;<br /><br />void USART_Init( unsigned int ubrr);<br />unsigned char uart_recieve (void);<br />void UART_TO_NUM (void);<br /><br />#endif[/syntax]<br /><br />main.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;1Wire.h&quot;<br />#include &quot;HC595.h&quot;<br />#include &quot;UART.h&quot;<br /><br /><br />#define B (1&lt;&lt;PC0)<br />#define A (1&lt;&lt;PC1)<br />#define SW (1&lt;&lt;PD3)<br />#define LED (1&lt;&lt;PC5)   // port zmiany led<br />#define BUZZ (1&lt;&lt;PC4)<br /> float DS18B20_temp(void);<br /> volatile int lock;<br /> int val, val_tmp ;<br /> uint16_t key_lock=1;<br /> float g=40.1;<br />uint8_t buzz;<br /><br />void SOUND(void);<br /><br />ISR(USART_RX_vect)<br />{<br />if(!bufor_ready)<br />{<br />update();<br />bufor&#91;_bufor&#93;= UDR0;<br />if( bufor&#91;_bufor&#93; == '\n' )<br />{<br />_buf=_bufor;<br />_bufor= 0;<br />//bufor_ready= 1;<br />}<br />else<br />{<br />_bufor++;<br />}<br />static int licznik=0;<br />if (licznik == 15){<br />dstemp =  DS18B20_temp();<br />licznik=0;}<br />licznik++;<br />}<br />}<br /><br />/////////////////////////////////////////////////////////////////////////////////////////////<br /><br />ISR(TIMER0_COMPA_vect)<br />{<br /><br />update();<br /><br />}<br /><br />///////////////////////////////////////////////////////////////////////////////////////////<br /><br />ISR(INT1_vect) {<br />static int licznik=0;<br />if (licznik==0 &amp;&amp; !(PIND &amp; SW)){<br />lock=1; licznik++;<br />}<br />else if (licznik != 0 &amp;&amp; !(PIND &amp; SW)){<br />lock=0;licznik=0;}<br /><br />}<br /><br />uint8_t read_gray_code_from_encoder(void )<br />{<br /> uint8_t val=0;<br /><br />  if((PINC&amp; A))<br />val |= (1&lt;&lt;1);<br /><br />  if((PINC &amp; B))<br />val |= (1&lt;&lt;0);<br /><br />  return val;<br />}<br /><br />int main(void)<br />{<br />DDRD |= SW;<br />//_1WireInit();<br />buzz=0;<br /> _delay_ms(100);<br />USART_Init(MYUBRR);<br />HC595Init();<br />TCCR0A|= (1&lt;&lt;WGM01);<br />TCCR0B|= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);<br />OCR0A=15;<br />TIMSK0|=(1&lt;&lt;OCIE0A);<br />DDRD |= SW;<br />EICRA|=(1&lt;&lt;ISC11);<br />EIMSK|=(1&lt;&lt;INT1);<br />val = read_gray_code_from_encoder();<br />sei();<br />DDRC |= LED;<br />DDRC |= A;<br />DDRC |= B;<br />PORTC|=A;<br />PORTC|=B;<br />DDRC |= BUZZ;<br />char TEMP&#91;10&#93;;<br />buzz=0;<br />dstemp =  DS18B20_temp();<br />while(1){<br />    while(lock==0)<br />    {<br />dtostrf(dstemp, 6, 3, TEMP);<br />int rosnie;<br /><br /><br /><br />cy6=TEMP&#91;0&#93;-48;<br />cy7=TEMP&#91;1&#93;-48;<br />cy8=TEMP&#91;3&#93;-48;<br /> if (b&gt;a)<br />  {cy5=down;rosnie = 0;}<br />else if (b&lt;a)<br /> {cy5=up;rosnie = 1;}<br />else if (b==a)<br /> {<br /> if(rosnie==1)<br />{cy5=down;}<br />if(rosnie==0)<br />{cy5=down;}<br /> }<br />cy2=bufor&#91;0&#93; - 48;<br />cy3=bufor&#91;1&#93; - 48;<br />cy4=bufor&#91;3&#93; - 48;<br /><br />UART_TO_NUM ();<br /><br />int maleje;<br />if (c&gt;temp_float)<br />{cy1=down; maleje = 1;}<br />else if (c&lt;temp_float)<br />{cy1=up; maleje = 0;}<br />else if (c==temp_float)<br />{<br />if(maleje==1)<br />   {cy1=down;}<br />if(maleje==0)<br />    {cy1=up;}<br /> }<br />SOUND();<br /><br /><br />c=temp_float;<br />     }<br />    while (lock==1)<br />    {<br /><br />    cy2=12;<br />    cy3=13;<br />    cy4=14;<br />    int G=g;<br />    int c7=G%10;<br />    int c6=(G-c7)/10;<br />    int c8=(g*10)-(G*10);<br />    cy6=c6;<br />    cy7=c7;<br />    cy8=c8;<br />     PORTC^=LED;<br /><br />     val_tmp = read_gray_code_from_encoder();<br />        if(val != val_tmp)<br />        {<br />        if( /*(val==2 &amp;&amp; val_tmp==3) ||*/<br />        (val==3 &amp;&amp; val_tmp==1) ||<br />        /*(val==1 &amp;&amp; val_tmp==0) ||*/<br />        (val==0 &amp;&amp; val_tmp==2)<br />      )<br />        {<br />     g=g-0.05;<br />        }<br />        else if( /*(val==3 &amp;&amp; val_tmp==2) ||*/<br />        (val==2 &amp;&amp; val_tmp==0) ||<br />        /*(val==0 &amp;&amp; val_tmp==1) ||*/<br />        (val==1 &amp;&amp; val_tmp==3)<br />      )<br />        {<br />     g=g+0.05;<br />        }<br /><br />        val = val_tmp;<br />        }<br /><br />    }<br />}}<br /><br />////////////////////////////////////////////////////////////////////////////////////////////////<br /><br />void SOUND(void)<br />{<br />static uint8_t k=0;<br />k++;<br />if (temp_float &lt;=  g )<br />{<br />if (k==10)<br />PORTC&amp;=~LED;<br />if (buzz==0)<br />{<br />PORTC^=BUZZ;<br />_delay_ms(100);<br />PORTC^=BUZZ;<br />_delay_ms(100);<br />PORTC^=BUZZ;<br />_delay_ms(100);<br />PORTC^=BUZZ;<br />buzz++;<br />}<br />}<br /><br />else if  (temp_float &gt; g)                // w każdej innej styucaji zapal niebieską i zezwól na sygnal<br />{<br />buzz=0;<br />if (k==100)<br />PORTC|=LED;<br />}<br />}[/syntax]<br /><br />i ten program działa (tzn ma jakieś drobne niedociągnięcia ale bardziej kosmetyczne typu jak zmienia się z np 38.9 na 39 to pokazuje że maleje bo patrzę tylko na to po przecinku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ) ten na arduino wydaje się że też działa ale nie wyświetla na ekranie tak jak powinien. Jak ma połączenie bluetooth to coś tam mruga bo w przerwaniu bluetooth mam też update() odpowiedzialne za ekran 7-seg 8 dig. I jak widać (mam nadzieję) w IDE wstawiłem że w przerwaniu timera ma piszczeć buzzer (żeby wykluczyć złe działanie rejestru przesównego) no i buzzer milczy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 6 maja 2017, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-06T13:09:50+01:00</updated>
<published>2017-05-06T13:09:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188562#p188562</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188562#p188562"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188562#p188562"><![CDATA[
ehh tylko mam problem np ze zmiennymi volatile których IDE nie rozumie :&lt; a wstawiłem wszystkie includy jakie były w moim main.c<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 6 maja 2017, o 13:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-06T11:12:24+01:00</updated>
<published>2017-05-06T11:12:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188551#p188551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188551#p188551"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188551#p188551"><![CDATA[
koniecznie musi być 328p bo mam na nim już gotowy działający projekt i chciałem podpiąć to do internetu - takie były moje założenia projektowe. Chciałem postawić serwer i puścić przez ddns. Robiłem wcześniej takie rzeczy ale miałem wtedy internet po kablu i ładnie to działało. Wiem że mogę pisać w &quot;zwykłym&quot; c w arduino IDE ale czy da się połączyć te 2 języki. Spróbuję to dziś zrobić <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 6 maja 2017, o 11:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-06T00:45:30+01:00</updated>
<published>2017-05-06T00:45:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188538#p188538</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188538#p188538"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188538#p188538"><![CDATA[
<div class="quotetitle">dambo napisał(a):</div><div class="quotecontent"><br />Tutaj masz kurs Blynka z ESP:<br /><br /><!-- m --><a class="postlink" href="http://projektydmb.blogspot.com/2016/02/zapowiedz-kursu-esp8266-blynk.html" >http://projektydmb.blogspot.com/2016/02 ... blynk.html</a><!-- m --><br /><br />Można z nim wiele fajnych rzeczy zrobić.<br /></div><br /><br />wiem że można <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> miałem okazje się tym pobawić. Problemem nie jest sam blynk tylko jak połączyć atmege przy pomocy modułu ethernetowego właśnie z np. blynkiem albo nawet z jakimkolwiek serwerem. Wiem tylko tyle ze avr musi być klientem o reszcie nie mam pojęcia za bardzo niestety. Wiem że na pewno już nie użyje tego w moich projektach <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> za dużo problemu z tym mam :&lt; a da się zrobić może arduinowe wstawki w kodzie pisanym w c coś jak asemblerowe wstawki <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> ? resztę mam już fajnie ogarniętą więc zostawił bym w c a samą komunikację ze światem wziął bym z arduino. Chyba że odwrotnie można że w arduinowym języku wstawki (a raczej 90% programu) w c <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 6 maja 2017, o 00:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-05T22:10:22+01:00</updated>
<published>2017-05-05T22:10:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188531#p188531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188531#p188531"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188531#p188531"><![CDATA[
no własnie arduino :&gt; żeby to zrobić na arduino to zajęło by mi 10 min <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> wszystko w internecie gotowe <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  a ja mam zwykły scaleczek atmega 328p bez żadnego bootloadera a w środku kod napisany w c. <br /><br />EDIT:<br /><br />mimo wszystko może coś z tym zrobię <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> przypomina to co jest dostępne na tuxgraphics<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 5 maja 2017, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[buz11]]></name></author>
<updated>2017-05-05T22:02:48+01:00</updated>
<published>2017-05-05T22:02:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188530#p188530</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188530#p188530"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188530#p188530"><![CDATA[
<a href="https://majsterkowo.pl/prosty-internetowy-czujnik-temperatury-za-pomoca-arduino-i-thingspeak/"  class="postlink">https://majsterkowo.pl/prosty-internetowy-czujnik-temperatury-za-pomoca-arduino-i-thingspeak/</a><br /><br />Czas szukania - 0,40s <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=686">buz11</a> — 5 maja 2017, o 22:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-05T21:48:34+01:00</updated>
<published>2017-05-05T21:48:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188529#p188529</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188529#p188529"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188529#p188529"><![CDATA[
no właśnie tak myślałem o tym ESP8266. W blynku nawet bym kodu nie musiał pisać bo jest już gotowy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> . Sęk w tym że mam to już zmontowane wszystko łącznie z otworem w obudowie na kabel ethernetowy <img src="https://forum.atnel.pl/images/smilies/icon_mad.gif" alt=":x" title="Wściekły" /> dla tego chciał bym jakoś to zrobić na tym co mam. Przeglądam google i nadal stoję w miejscu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 5 maja 2017, o 21:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[buz11]]></name></author>
<updated>2017-05-05T21:16:03+01:00</updated>
<published>2017-05-05T21:16:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188521#p188521</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188521#p188521"/>
<title type="html"><![CDATA[Re: thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188521#p188521"><![CDATA[
Jeśli chcesz najprościej monitorować temperaturę z zapisem na serwer, to w Elektronice Praktycznej nr3/2017 str.117-118 w artykule &quot;Rejestracja i wizualizacja temperatury&quot; opisałem jak to zrobić z wykorzystaniem modułu ESP8266 i serwisu thingspeak - prościej się chyba nie da <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=686">buz11</a> — 5 maja 2017, o 21:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartek9863]]></name></author>
<updated>2017-05-05T17:18:23+01:00</updated>
<published>2017-05-05T17:18:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188485#p188485</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188485#p188485"/>
<title type="html"><![CDATA[thingspeak blynk itp na atmega328p?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18341&amp;p=188485#p188485"><![CDATA[
Witam,<br /><br />zastanawiam się czy można skorzystać z dobrodziejstw wymienionych w temacie serwisów przy użyciu c w atemdze328p. Niestety internet o tym milczy. Wszystko co znalazłem jest na arduino. Moduł ethernetowy to enc28j60. Dodam że ogólnie klienty i serwery tcp dhcp udp itp. niewiele mi mówią. Znalazłem coś że klient z zewnętrzym serwerem na avr można zrobić tylko jakieś skrypty trzeba wgrać a ja nie wiem o co chodzi. Do tak prostego zadania (pomiar temperatury) normalnie użył bym serwera postawionego na uc ale niestety mam bezprzewodowy internet (LTE) i nie mogę sobie ustawić DDNS a za statyczne ip nie uśmiecha mi się płacić stąd zewnętrzny serwer. (spokojnie mam możliwość podłączenia modułu ethernetowego do rutera). <br /><br />Więc teraz pytanie jak to ugryźć co zrobić żebym miał globalny dostęp do odczytu temperatury. Żadnego kodu i schematu nie wstawię bo kod w tym momencie nie ma nic wspólnego z internetem a schemat dobry na 100% bo pingi dochodzą i dodatkowo postawiłem już serwer na uc który działał chociaż kod wyglądał jak na moje tragicznie <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16739">bartek9863</a> — 5 maja 2017, o 17:18</p><hr />
]]></content>
</entry>
</feed>