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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-10T20:50:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=11339&amp;mode</id>
<entry>
<author><name><![CDATA[icer_cmg]]></name></author>
<updated>2015-04-10T13:46:48+01:00</updated>
<published>2015-04-10T13:46:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11339&amp;p=126129#p126129</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11339&amp;p=126129#p126129"/>
<title type="html"><![CDATA[Re: Heated bed controller problem z kompilacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11339&amp;p=126129#p126129"><![CDATA[
Popraw listing bo masakra wyszła<br /><br />syntax c ma być<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1636">icer_cmg</a> — 10 kwi 2015, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hlystek]]></name></author>
<updated>2015-04-10T20:50:45+01:00</updated>
<published>2015-04-10T12:21:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11339&amp;p=126122#p126122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11339&amp;p=126122#p126122"/>
<title type="html"><![CDATA[Heated bed controller problem z kompilacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11339&amp;p=126122#p126122"><![CDATA[
Witam bardzo serdecznie wszystkich użytkowników. Chciałbym na wstępie zaznaczyć że jako początkujący w temacie będę stawiał dużo pytań. Znalazłem w sieci bardzo interesujący mnie projekt kontrolera temperatury z wyświetlaczem oparty o arduino. Zaznaczam ze używam Arduino  1.5.5. Problem jaki napotkałem po ściągnięciu pliku jest następujący:<br />1 - przy próbie skompilowania pliku otrzymuje serię błędów:<br /><br />&quot;<br />Extruder.ino: In function 'void displayTemperaturesInformation()':<br />Extruder:261: error: 'class String' has no member named 'append'<br />Extruder:262: error: 'class String' has no member named 'append'<br />Extruder:264: error: 'class String' has no member named 'append'<br />Extruder:266: error: 'class String' has no member named 'append'<br />Extruder:268: error: 'class String' has no member named 'append'<br />Extruder:269: error: 'class String' has no member named 'append'<br />Extruder:273: error: 'class String' has no member named 'append'<br />Extruder:277: error: 'class String' has no member named 'append'<br />Extruder:283: error: 'class String' has no member named 'append'<br />Extruder:284: error: 'class String' has no member named 'append'<br />Extruder:286: error: 'class String' has no member named 'append'<br />Extruder:288: error: 'class String' has no member named 'append'<br />Extruder:292: error: 'class String' has no member named 'append'<br />Extruder:294: error: 'class String' has no member named 'append'<br />&quot;<br /><br /><br />2. Idąc za poradami innych użytkowników zmieniłem w kodzie następująca forme  - 'append' - concat<br />3. Teraz otrzymałem takie cos:<br /><br />&quot;<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:4:22: error: WProgram.h: No such file or directory<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp: In constructor 'Bounce::Bounce(uint8_t, long unsigned int)':<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:11: error: 'millis' was not declared in this scope<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:12: error: 'digitalRead' was not declared in this scope<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp: In member function 'void Bounce::write(int)':<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:20: error: 'digitalWrite' was not declared in this scope<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp: In member function 'int Bounce::update()':<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:46: error: 'millis' was not declared in this scope<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp: In member function 'long unsigned int Bounce::duration()':<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:58: error: 'millis' was not declared in this scope<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp: In member function 'int Bounce::debounce()':<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:71: error: 'digitalRead' was not declared in this scope<br />C:\Users\AMD\Documents\Arduino\libraries\Bounce\Bounce.cpp:73: error: 'millis' was not declared in this scope<br />&quot;<br /><br />Starałem się znaleźć jakaś wskazówkę w sieci jednak moje próby po trzech dniach walki skończyły się na jeszcze większej ilości błędów. Brnąc dalej w temacie doszedłem do wniosku ze zapewne chodzi o biblioteki z których korzystał autor projektu:<br />#include &lt;WString.h&gt;<br />#include &lt;LiquidCrystal.h&gt;<br />#include &lt;Bounce.h&gt;<br />A że projekt jest z roku 2010 i autor kompilował pod arduino ?   ... -  tak wiec poziom mojej wiedzy jako początkujący jest niestety niewystarczający dlatego proszę kogoś z większa jej ilością o jakieś wskazówki. A tutaj kod:<br /><br /><br />[syntax=cpp]CC-GNU GPL - Creative Commons GNU / General Public License<br />   http://creativecommons.org/licenses/GPL/2.0/deed.en<br />   <br />   -uses 200K thermistor (GT 204GT-1) to measure hot plate temperature<br />   -uses SSR relay to power on/off the transformator<br />   -uses 2 push buttons to set target temperature<br />   -uses standard 2x16 LCD to display information<br /><br />   Imported libraries:<br />   -Bounce (push-buttons signal cleaning)<br />   -LiquidCrystal (LCD display)<br />   -WString (strings manipulation)<br /><br />   Todo list:<br />   -implement a third button to register target temperature<br />   -implement a fourth button to power on/off heating resistors (instead of using setting temp buttons)<br />   -implement red led to be installed near the hot plate, signaling if plate is hot (&gt; 45° for example)<br /><br />------------------------------------------------------------------------------------------------------------------------------------------------------------ */<br />&#91;syntax=i&#93;/* ------------------------------------------------------------------------------------------------------------------------------------------------------------<br /><br />   thermostatduino.pde v1.0 - march 2010<br />   Temperature control for repraps machines hot-plates<br />   François Delègue - http://reprapide.fr<br />   modified by - Laszlo KREKACS http://blog.arcol.hu<br />   <br />   CC-GNU GPL - Creative Commons GNU / General Public License<br />   http://creativecommons.org/licenses/GPL/2.0/deed.en<br />   <br />   -uses 200K thermistor (GT 204GT-1) to measure hot plate temperature<br />   -uses SSR relay to power on/off the transformator<br />   -uses 2 push buttons to set target temperature<br />   -uses standard 2x16 LCD to display information<br /><br />   Imported libraries:<br />   -Bounce (push-buttons signal cleaning)<br />   -LiquidCrystal (LCD display)<br />   -WString (strings manipulation)<br /><br />   Todo list:<br />   -implement a third button to register target temperature<br />   -implement a fourth button to power on/off heating resistors (instead of using setting temp buttons)<br />   -implement red led to be installed near the hot plate, signaling if plate is hot (&gt; 45° for example)<br /><br />------------------------------------------------------------------------------------------------------------------------------------------------------------ */<br /><br />/*<br />   libraries<br />*/<br />#include &lt;WString.h&gt;<br />#include &lt;LiquidCrystal.h&gt;<br />#include &lt;Bounce.h&gt;<br />// #include &lt;EEPROM.h&gt;<br /><br />/*<br />   setting pins<br />*/<br />const int ledPin = 13;                // LED connected to digital pin 13<br />const int relayCommandPin = 2;         // out<br />const int decreaseTempButtonPin = 3;   // in<br />const int increaseTempButtonPin = 4;   // in<br /><br />int value = LOW;                // previous value of the LED<br />const int TMP36Pin = 2;        // in<br />const int thermistorPin = 0;   // in<br /><br />/*<br />   lcd init &amp; string vars<br />*/<br />LiquidCrystal lcd (7,8,9,10,11,12);<br /><br />String firstLCDLine;<br />String secondLCDLine;<br /><br />/*<br />   bounce init<br />*/<br />Bounce increaseTempButton = Bounce (increaseTempButtonPin, 5);<br />Bounce decreaseTempButton = Bounce (decreaseTempButtonPin, 5);<br /><br />/*<br />   temperatures vars<br />*/<br />int targetTemp = 105;<br />int oldTargetTemp;<br /><br />const int maximumTemp = 130;<br />const int minimumTemp = 10;<br /><br />float currentTemperature;<br /><br />const int tempAddressIntoMemory = 0;<br /><br />// delays for setting/reading target temperature<br />const int longDelayTime = 400;   // when a button get into continuous setting temperature mode<br />const int shortDelayTime = 100;   // delay between 2 increments or decrements (continuous setting mode)<br /><br />/*<br />   relay vars (no to set relay all time long)<br />*/<br />const unsigned long relayTimer = 100000;<br />unsigned long relayCounter;<br /><br />long interval = 10;<br />int on = 1;<br />int off = 0;<br />int percentage = 50;<br />long previousMillis = 0;<br />int sec = 0;<br /><br />/*<br />   thermistor lookup table<br />   see http://www.reprap.org/wiki/Temperature_Sensor_2_0#Upload_firmware_to_Arduino<br />*/<br />#define NUMTEMPS 20<br /><br />// Thermistor lookup table for RepRap Temperature Sensor Boards (http://make.rrrf.org/ts)<br />// Made with createTemperatureLookup.py (http://svn.reprap.org/trunk/reprap/firmware/Arduino/utilities/createTemperatureLookup.py)<br />// python createTemperatureLookup.py --r0=200000 --t0=25 --beta=4338 --r1=6000 --r2=22000<br />// r0: 200000<br />// t0: 25<br />// r1: 6000<br />// r2: 22000<br />// beta: 4338<br />// max adc: 219<br /><br />short temptable&#91;NUMTEMPS&#93;&#91;2&#93; = {<br />   {1, 528},<br />   {52, 187},<br />   {103, 153},<br />   {154, 135},<br />   {205, 122},<br />   {256, 112},<br />   {307, 103},<br />   {358, 96},<br />   {409, 89},<br />   {460, 83},<br />   {511, 77},<br />   {562, 71},<br />   {613, 65},<br />   {664, 59},<br />   {715, 53},<br />   {766, 46},<br />   {817, 38},<br />   {868, 29},<br />   {919, 16},<br />   {970, -14}<br />};<br /><br />void setup ()<br />{<br />   pinMode (relayCommandPin, OUTPUT);<br />   pinMode(ledPin, OUTPUT);      // sets the digital pin as output<br />   analogReference(INTERNAL);<br />   lcd.begin(16, 2);<br />   lcd.setCursor (0, 0);<br />   lcd.print (&quot;Init...&quot;);<br />   //targetTemp = EEPROM.read (tempAddressIntoMemory);<br />   //oldTargetTemp = targetTemp;<br />}<br /><br />void loop ()<br />{<br />  //delay(1);<br />   setTargetTemperature ();<br />   //dutyCycle();<br />   checkInterval();<br />   //percentage = 96;<br />}<br /><br />void setTargetTemperature ()<br />{<br />   increaseTempButton.update ();<br />   if (increaseTempButton.read () == LOW &amp;&amp; targetTemp &lt; maximumTemp)<br />   {<br />      targetTemp += 1;<br />      displayTemperaturesInformation ();<br />      delay (longDelayTime);      <br />      increaseTempButton.update ();<br />      while (increaseTempButton.read () == LOW &amp;&amp; targetTemp &lt; maximumTemp)<br />      {<br />         targetTemp += 1;<br />         displayTemperaturesInformation ();<br />         delay (shortDelayTime);<br />         increaseTempButton.update ();<br />      }<br />   }<br />   <br />   decreaseTempButton.update ();<br />   if (decreaseTempButton.read () == LOW &amp;&amp; targetTemp &gt; minimumTemp)<br />   {<br />      targetTemp -= 1;<br />      displayTemperaturesInformation ();<br />      delay (longDelayTime);      <br />      decreaseTempButton.update ();<br />      while (decreaseTempButton.read () == LOW &amp;&amp; targetTemp &gt; minimumTemp)<br />      {<br />         targetTemp -= 1;<br />         displayTemperaturesInformation ();<br />         delay (shortDelayTime);<br />         decreaseTempButton.update ();<br />      }<br />   }<br />}<br /><br />void dutyCycle()  // OK. This idea is not really working. Better to do brute-force.<br />{<br />  if (millis() - previousMillis &gt; interval) {<br />    previousMillis = millis();<br />    if (on &gt; 0) {<br />      on++;<br />      if (on &gt; percentage)  {<br />        setTemperatureAndRelay ();<br />        on = 0;<br />        off = 1;<br />        digitalWrite(ledPin, LOW);<br />        digitalWrite (relayCommandPin, LOW);<br />      }<br />    }<br />    if (off &gt; 0) {<br />      off++;<br />      if (off &gt; 100 - percentage) {<br />        if (percentage == 0) {<br />         on = 0; <br />         off = 1;<br />         setTemperatureAndRelay ();<br />        } else {<br />          on = 1;<br />          off = 0;<br />          digitalWrite(ledPin, HIGH);<br />          digitalWrite (relayCommandPin, HIGH);<br />        }<br />      }<br />    }<br />  }<br />}<br /><br />void checkInterval() {<br />  if (millis() - previousMillis &gt; interval) {<br />    previousMillis = millis();<br />    sec++;<br />    if (sec &gt; 10) {<br />      sec = 0;<br />      displayTemperaturesInformation();<br />    }<br />    setTemperatureAndRelay();<br /><br />  }<br />}<br /><br />void setTemperatureAndRelay ()<br />{<br />    currentTemperature = getThermistanceTemperature (thermistorPin);<br />    if (currentTemperature &gt;= targetTemp)<br />    {<br />      //percentage--;<br />      //if (percentage &lt; 1) { percentage = 0; }<br />      digitalWrite(ledPin, LOW);<br />      digitalWrite (relayCommandPin, LOW);<br />    }<br />    else<br />    {<br />      digitalWrite(ledPin, HIGH);<br />      digitalWrite (relayCommandPin, HIGH);<br />      //percentage++;<br />      //if (percentage &gt; 100) { percentage = 100;}<br />    }<br /><br />   //    if (oldTargetTemp != targetTemp)<br />   //    {<br />   //       EEPROM.write (tempAddressIntoMemory, targetTemp);<br />   //       oldTargetTemp = targetTemp;<br />   //    }<br /><br />}<br /><br />void displayTemperaturesInformation ()<br />{<br />   firstLCDLine = &quot;Bed &quot;;<br />   firstLCDLine.concat (int(currentTemperature));<br />   firstLCDLine.concat(&quot;C&quot;);<br />   if (int(currentTemperature) &lt; targetTemp) {<br />       firstLCDLine.concat (&quot; &lt; &quot;);<br />   } else {<br />       firstLCDLine.concat (&quot; &gt; &quot;);<br />   }<br />   firstLCDLine.concat (targetTemp);<br />   firstLCDLine.concat(&quot;C&quot;);<br />  // firstLCDLine.concat(int(analogRead (thermistorPin)));<br />   if (digitalRead (relayCommandPin) == HIGH)<br />   {<br />      firstLCDLine.concat (&quot;* &quot;);<br />   }<br />   else<br />   {<br />      firstLCDLine.concat (&quot;  &quot;);<br />   }<br />   lcd.setCursor (0, 0);<br />   lcd.print (firstLCDLine);<br /><br />   secondLCDLine = &quot;A/D:&quot;;<br />   secondLCDLine.concat(int(analogRead (thermistorPin)));<br />   secondLCDLine.concat(&quot; Butt:&quot;);<br />   if (digitalRead (decreaseTempButtonPin) == LOW) {<br />     secondLCDLine.concat(&quot;D&quot;);<br />   } else {<br />     secondLCDLine.concat(&quot;d&quot;);<br />   }<br />   increaseTempButton.update();<br />   if (increaseTempButton.read() == LOW) {<br />     secondLCDLine.concat(&quot;U&quot;);<br />   } else { <br />     secondLCDLine.concat(&quot;u&quot;);<br />   }<br />   lcd.setCursor (0, 1);<br />   lcd.print (secondLCDLine);<br />}<br /><br />float getTMP36Temperature (int pin)<br />{<br />   float temp = analogRead (pin) * .004882814;<br />   temp = (temp - .5) * 100;<br />   return temp;<br />}<br /><br />int getThermistanceTemperature (int pin)<br />{<br />   // see http://www.reprap.org/wiki/Temperature_Sensor_2_0#Upload_firmware_to_Arduino<br />   int rawtemp = analogRead (pin);<br />   int current_celsius = 0;<br /><br />   byte i;<br />   for (i=1; i&lt;NUMTEMPS; i++)<br />   {<br />      if (temptable&#91;i&#93;&#91;0&#93; &gt; rawtemp)<br />      {<br />         int realtemp  = temptable&#91;i-1&#93;&#91;1&#93; + (rawtemp - temptable&#91;i-1&#93;&#91;0&#93;) * (temptable&#91;i&#93;&#91;1&#93; - temptable&#91;i-1&#93;&#91;1&#93;) / (temptable&#91;i&#93;&#91;0&#93; - temptable&#91;i-1&#93;&#91;0&#93;);<br />         if (realtemp &gt; 255)<br />         {<br />            realtemp = 255; <br />         }<br />         current_celsius = realtemp;<br />         break;<br />      }<br />   }<br /><br />   // Overflow: We just clamp to 0 degrees celsius<br />   if (i == NUMTEMPS)<br />   {<br />      current_celsius = 0;<br />   }<br /><br />   return current_celsius;[/syntax]<br /><br /><span style="color: #FF0000">Źle wstawiony listing - Różowo - zielony J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6506">hlystek</a> — 10 kwi 2015, o 12:21</p><hr />
]]></content>
</entry>
</feed>