<?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=24128&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2022-02-02T14:44:08+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=24128&amp;mode</id>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2022-02-02T14:44:08+01:00</updated>
<published>2022-02-02T14:44:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24128&amp;p=234960#p234960</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24128&amp;p=234960#p234960"/>
<title type="html"><![CDATA[Re: Buzzer z różną częstotliwością po otzrymaniu wiadomości ]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24128&amp;p=234960#p234960"><![CDATA[
np tak:<br /><br />[syntax=cpp]#include &lt;SPI.h&gt;          //SPI is used to talk to the CAN Controller<br />#include &lt;mcp_can.h&gt;<br />#include &lt;defaults.h&gt; // added<br />#include &lt;global.h&gt;   // added<br />const int buzzerPin = 8; //Led is buzzer connected to pin 8 added<br /><br />MCP_CAN CAN(10);          //set SPI Chip Select to pin 10<br /><br />unsigned char len = 0;<br />unsigned char buf&#91;8&#93;;<br />unsigned int canID;<br /><br /><br />typedef struct<br />{<br />    bool start;<br />    uint16_t timeOn;<br />}BuzzerType;<br /><br />static BuzzerType Buzzer;<br /><br />//******************************** Setup *********************************//<br /><br />void setup()<br />{<br />  Serial.begin(115200);   //to communicate with Serial monitor<br />  pinMode(buzzerPin, OUTPUT); //Set digital pin 8 to OUTPUT for buzzer<br /> <br /><br />//tries to initialize, if failed --&gt; it will loop here for ever<br />START_INIT:<br /><br />    if(CAN_OK == CAN.begin(CAN_500KBPS))      //setting CAN baud rate to 500Kbps<br />    {<br />        Serial.println(&quot;CAN BUS Shield init ok!&quot;);<br />    }<br />    else<br />    {<br />        Serial.println(&quot;CAN BUS Shield init fail&quot;);<br />        Serial.println(&quot;Init CAN BUS Shield again&quot;);<br />        nosound();<br />        delay(100);<br />        goto START_INIT;<br />    }<br />}<br /><br /><br />void BuzzStart(uint16_t time)<br />{<br />    Buzzer.start = true;<br />    Buzzer.timeOn = time;<br />}<br /><br />void BuzzTask(void)<br />{<br />    static uint8_t state = 0;<br />    static uint16_t timerRun;<br /><br />    timerRun++;<br />    <br />    switch(state)<br />    {<br />        case 0:<br /><br />        if(Buzzer.start)<br />        {<br />            Buzzer.start = false;<br />            timerRun = 0;<br />            digitalWrite(buzzerPin, HIGH);<br />            state = 1;<br />        }<br /><br />        break;<br />    case 1:<br />        if(timerRun &gt;= Buzzer.timeOn)<br />        {<br />            digitalWrite(buzzerPin, LOW);<br />            state = 0;<br />        }<br />    break;<br />    }<br />}<br /><br />void loop()<br />{<br />    delay(1);<br />    BuzzTask();<br /><br />    if(CAN_MSGAVAIL == CAN.checkReceive())        //check if data coming<br />    {<br />        CAN.readMsgBuf(&amp;len, buf);    //read data,  len: data length, buf: data buffer<br />        canID = CAN.getCanId();       //getting the ID of the incoming message<br />        CAN.init_Mask(0, 0, 0x200);<br />       <br />        if (canID == 0x200)            //reading only our beloved 0x597 message<br />        {<br />          Serial.print(&quot;ID is: &quot;);<br />          Serial.print(canID, HEX);     //printing the ID in its standard form, HEX<br /><br />          Serial.print(&quot;    Length is: &quot;);<br />          Serial.println(len);<br /><br />          Serial.println(&quot;\n\n&quot;);<br />         <br />           <br />         <br /><br />          // ** distance signal read<br />         <br />          if((buf&#91;0&#93; == 0x40) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości : 1 +&quot;);<br />            BuzzStart(500);<br />           <br />          }<br /><br />          if((buf&#91;0&#93; == 0x41) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości 2 : ++&quot;);<br />            BuzzStart(300);<br />           <br />          }<br /><br />          if((buf&#91;0&#93; == 0x42) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości 3 : +++&quot;);<br />            BuzzStart(100);<br />          }<br /><br />         <br />          if((buf&#91;0&#93; == 0x43) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości 3 : +++&quot;);<br />            BuzzStart(50);<br />          }<br /><br />          else if((buf&#91;0&#93; | 0x40, 0x41, 0x42, 0x43) )<br />          {<br />            Serial.println(&quot;no data&quot;);<br />          }<br />         <br />         }<br />      }<br />}[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Aczkolwiek jest to nieeleganckie bo wprowadza w pętli głównej opóźnienie 1ms ale coś za coś<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 2 lut 2022, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maildoremika]]></name></author>
<updated>2022-02-02T13:08:44+01:00</updated>
<published>2022-02-02T13:08:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24128&amp;p=234959#p234959</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24128&amp;p=234959#p234959"/>
<title type="html"><![CDATA[Buzzer z różną częstotliwością po otzrymaniu wiadomości CAN]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24128&amp;p=234959#p234959"><![CDATA[
Koledzy jak zastąpić funkcję delay przy soundX() , delay powoduje blokowanie odczytu z CAN .<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#include &lt;SPI.h&gt;          //SPI is used to talk to the CAN Controller<br />#include &lt;mcp_can.h&gt;<br />#include &lt;defaults.h&gt; // added<br />#include &lt;global.h&gt;   // added<br />const int buzzerPin = 8; //Led is buzzer connected to pin 8 added<br /><br />MCP_CAN CAN(10);          //set SPI Chip Select to pin 10<br /><br />unsigned char len = 0;<br />unsigned char buf&#91;8&#93;;<br />unsigned int canID;<br /><br /><br />//******************************** Setup *********************************//<br /><br />void setup()<br />{<br />  Serial.begin(115200);   //to communicate with Serial monitor<br />  pinMode(buzzerPin, OUTPUT); //Set digital pin 8 to OUTPUT for buzzer<br />  <br /><br />//tries to initialize, if failed --&gt; it will loop here for ever<br />START_INIT:<br /><br />    if(CAN_OK == CAN.begin(CAN_500KBPS))      //setting CAN baud rate to 500Kbps<br />    {<br />        Serial.println(&quot;CAN BUS Shield init ok!&quot;);<br />    }<br />    else<br />    {<br />        Serial.println(&quot;CAN BUS Shield init fail&quot;);<br />        Serial.println(&quot;Init CAN BUS Shield again&quot;);<br />        nosound();<br />        delay(100);<br />        goto START_INIT;<br />    }<br />}<br /><br />void sound1() // for distance 1<br />{<br />          digitalWrite(buzzerPin, HIGH); // problemem jest delay przytyka działanie jak wykożystać millis?<br />          delay(500);                             <br />          digitalWrite(buzzerPin, LOW); //<br />}<br /><br />void sound2() // for distance 2<br />{<br />          digitalWrite(buzzerPin, HIGH); //Set buzzer on<br />          delay(300);<br />          digitalWrite(buzzerPin, LOW); //Set buzzer off<br />}<br /><br />void sound3() // for distance 3<br />{<br />          digitalWrite(buzzerPin, HIGH); //Set LED on<br />          delay(100);<br />          digitalWrite(buzzerPin, LOW); //Set LED off<br />}<br /><br />void sound4() // for distance 4<br />{<br />          digitalWrite(buzzerPin, HIGH); //Set buzzer on<br />          delay(50);<br />          digitalWrite(buzzerPin, LOW); //Set buzzer off<br />}<br /><br />void nosound() // for stop buzzer<br />{<br />                    digitalWrite(buzzerPin, LOW); //Set buzzer off<br />}<br /><br />void loop()<br /><br /><br />{<br />    if(CAN_MSGAVAIL == CAN.checkReceive())        //check if data coming<br />    {<br />        CAN.readMsgBuf(&amp;len, buf);    //read data,  len: data length, buf: data buffer<br />        canID = CAN.getCanId();       //getting the ID of the incoming message<br />        CAN.init_Mask(0, 0, 0x200);<br />        <br />        if (canID == 0x200)            //reading only our beloved 0x597 message<br />        {<br />          Serial.print(&quot;ID is: &quot;);<br />          Serial.print(canID, HEX);     //printing the ID in its standard form, HEX<br /><br />          Serial.print(&quot;    Length is: &quot;);<br />          Serial.println(len);<br /><br />          Serial.println(&quot;\n\n&quot;);<br />          <br />            <br />          <br /><br />          // ** distance signal read <br />          <br />          if((buf&#91;0&#93; == 0x40) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości : 1 +&quot;); <br />            sound1();<br />            <br />          }<br /><br />          if((buf&#91;0&#93; == 0x41) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości 2 : ++&quot;);<br />            sound2();<br />            <br />          }<br /><br />          if((buf&#91;0&#93; == 0x42) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości 3 : +++&quot;);<br />            sound3();<br />          }<br /><br />          <br />          if((buf&#91;0&#93; == 0x43) )<br />          {<br />            Serial.println(&quot;Byte 0 Sygnał odległości 3 : +++&quot;);<br />            sound4();<br />          }<br /><br />          else if((buf&#91;0&#93; | 0x40, 0x41, 0x42, 0x43) )<br />          {<br />            Serial.println(&quot;no data&quot;);<br />            nosound();<br />          }<br />          <br />         }<br />      }<br />}<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21885">maildoremika</a> — 2 lut 2022, o 13:08</p><hr />
]]></content>
</entry>
</feed>