<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Analog to digital how ?]]></title><description><![CDATA[<p dir="auto">Hi there,</p>
<p dir="auto">I would like to know what and where i have to look for.</p>
<p dir="auto">I reading with my nano 328 port A0, A1, A2  voltage from "3" motion senors<br />
and get a specific value &gt;700<br />
if one of those ports gets above this 700<br />
I would like to send this true mysensors as an normal motion sensor normal true trigger<br />
but im not using any interrupt<br />
How do i send this ?</p>
<p dir="auto">if (analogRead(A0) &gt;=700)<br />
{<br />
send(msgmotion0.set(tripped0?"1":"0"));</p>
<p dir="auto">and for the others.<br />
send(msgmotion0.set(tripped0?"1":"0"));<br />
send(msgmotion1.set(tripped1?"1":"0"));<br />
send(msgmotion3.set(tripped3?"1":"0"));</p>
]]></description><link>https://forum.mysensors.org/topic/7032/analog-to-digital-how</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 11:47:29 GMT</lastBuildDate><atom:link href="https://forum.mysensors.org/topic/7032.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Jun 2017 00:36:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Analog to digital how ? on Tue, 20 Jun 2017 19:21:05 GMT]]></title><description><![CDATA[<p dir="auto">All working fine sometimes the pir reaction could be a bid faster, and sometimes i get a false reading think i'll have to put the pir signal lines to the ground with an resistor.</p>
<p dir="auto">Any advice is welcome, to make thing faster, and less complex.<br />
else use this with fun......</p>
<pre><code>


#define MY_RADIO_NRF24
#define MY_REPEATER_FEATURE
#define MY_DEBUG

#include &lt;Wire.h&gt;        // Wire library t.b.v. I²C
#include &lt;MySensors.h&gt;

byte GPIOA  = 0x12;      // GPIOA adres in 16-bit mode, is directe aansturing 1e groep van 8 I/O poorten.
byte GPIOB  = 0x13;      // GPIOA adres in 16-bit mode, is directe aansturing 1e groep van 8 I/O poorten.

boolean sensorBovenActive;    // Status of Pir motion sensor 2.
boolean sensorOnderActive;    // Status of Pir motion sensor 1.
boolean sensorKelderActive;    // Status of Pir motion sensor 0.

int PIR0new;      // Pir motion sensor 0 updated value "Kelder".
int PIR0old;      // Pir motion sensor 0 old value "Kelder".
int PIR1new;      // Pir motion sensor 1 updated value "sensorOnderActive".
int PIR1old;      // Pir motion sensor 1 old value "sensorOnderActive".
int PIR2new;      // Pir motion sensor 2 updated value. "sensorBovenActive"
int PIR2old;      // Pir motion sensor 2 old value. sensorBovenActive"

int StairDelay = 250; // Delay for stairs
int StairOn = 30000; // Delay to keep stair light on

#define MY_NODE_ID 30
#define CHILD_ID_PIR00 31   // Id of the sensor child
#define CHILD_ID_PIR01 32   // Id of the sensor child
#define CHILD_ID_PIR02 33   // Id of the sensor child

void presentation(){
// Send the sketch version information to the gateway and Controller
  sendSketchInfo("Trap Controller", "4.0");

// Register all sensors to gw (they will be created as child devices)
  present(CHILD_ID_PIR00, S_MOTION, "PIR Sensor Kelder");
  present(CHILD_ID_PIR01, S_MOTION, "PIR Sensor Trap Onder");
  present(CHILD_ID_PIR02, S_MOTION, "PIR Sensor Trap Boven");
} 

// Initialize motion message
 MyMessage msgPIR00(CHILD_ID_PIR00, V_TRIPPED);
 MyMessage msgPIR01(CHILD_ID_PIR01, V_TRIPPED);
 MyMessage msgPIR02(CHILD_ID_PIR02, V_TRIPPED);

// the setup routine runs once when you press reset:
void setup() {
  
 Wire.begin(); // wake up I2C bus 
 // set I/O pins to outputs
 Wire.beginTransmission(0x20); // Start adress of mcp23017
 Wire.write(0x00); // IODIRA register
 Wire.write(0x00); // set all of port A to outputs
 Wire.endTransmission();
 Wire.beginTransmission(0x20);
 Wire.write(0x01); // IODIRB register
 Wire.write(0x00); // set all of port B to outputs
 Wire.endTransmission();
}

// the loop routine runs over and over again forever:
void loop() {
 Pir0lezen();
 Pir1lezen();
 Pir2lezen();
 effneerop();
 effopneer();
 effKelder();
}

void Pir0lezen() {
  int PIR0new = analogRead(A0);
  if (PIR0new &gt;=900) {
  sensorKelderActive = true;
  // Send status to Domoticz
  send (msgPIR00.set(sensorKelderActive?"1":"0"));
  Serial.println("PIR0new----");
  Serial.println(PIR0new);
  PIR0old = PIR0new;
  sensorKelderActive = false;
  send (msgPIR00.set(sensorKelderActive));
}}

void Pir1lezen() {
  int PIR1new = analogRead(A1);
  if (PIR1new != PIR1old &amp;&amp; PIR1new &gt;=710) {
  sensorOnderActive = true ;
  sensorBovenActive = false ;
  // Send status to Domoticz
  send (msgPIR01.set(sensorOnderActive?"1":"0"));
  Serial.println("PIR1----");
  Serial.println(PIR1new);
  PIR1old = PIR1new;
  
}}

void Pir2lezen() {
  int PIR2new = analogRead(A2);
  if (PIR2new != PIR2old &amp;&amp; PIR2new &gt;=710) {
  sensorBovenActive = true ;
  sensorOnderActive = false ;
  // Send status to Domoticz
  send (msgPIR02.set(sensorBovenActive?"1":"0"));
  Serial.println("PIR2----");
  Serial.println(PIR2new);
  PIR2old = PIR2new;
  
}}

void effopneer() {
    if (sensorOnderActive==true &amp;&amp; sensorBovenActive==false){
    Serial.println("PIR1--aan");
    sensorOnderActive = false ;  
    setLEDA(B01111111);  // Tree 1
    delay(StairDelay); 
    setLEDA(B00111111);  // Tree 2
    delay(StairDelay); 
    setLEDA(B00011111);  // Tree 3
    delay(StairDelay); 
    setLEDA(B00001111);  // Tree 4
    delay(StairDelay); 
    setLEDA(B00000111);  // Tree 5
    delay(StairDelay); 
    setLEDA(B00000011);  // Tree 6
    delay(StairDelay); 
    setLEDA(B00000001);  // Tree 7
    delay(StairDelay); 
    setLEDA(B00000000);  // Tree 8
    delay(StairDelay); 
    setLEDB(B01111111);  // Tree 9
    delay(StairDelay); 
    setLEDB(B00111111);  // Tree 10
    delay(StairDelay); 
    setLEDB(B00011111);  // Tree 11
    delay(StairDelay); 
    setLEDB(B00001111);  // Tree 12
    delay(StairDelay); 
    setLEDB(B00000111);  // Tree 13
    delay(StairDelay); 
    setLEDB(B00000011);  // Tree 14
    send (msgPIR01.set(sensorOnderActive)); // switch off before delay
    delay(StairOn); 
    setLEDA(B11111111);  // all off
    setLEDB(B11111111);  // all off
    Serial.println("PIR1--uit");
}}

void effneerop() {
  if (sensorOnderActive==false &amp;&amp; sensorBovenActive==true){
    Serial.println("PIR2--aan");
    sensorBovenActive = false ;
    setLEDB(B11111011);  // Tree 14
    delay(StairDelay); 
    setLEDB(B11110011);  // Tree 13
    delay(StairDelay); 
    setLEDB(B11100011);  // Tree 12
    delay(StairDelay); 
    setLEDB(B11000011);  // Tree 11
    delay(StairDelay); 
    setLEDB(B10000111);  // Tree 10
    delay(StairDelay); 
    setLEDB(B00000011);  // Tree 9
    delay(StairDelay); 
    setLEDA(B11111110);  // Tree 8
    delay(StairDelay); 
    setLEDA(B11111100);  // Tree 7
    delay(StairDelay); 
    setLEDA(B11111000);  // Tree 6
    delay(StairDelay); 
    setLEDA(B11110000);  // Tree 5
    delay(StairDelay); 
    setLEDA(B11100000);  // Tree 4
    delay(StairDelay); 
    setLEDA(B11000000);  // Tree 3
    delay(StairDelay); 
    setLEDA(B10000000);  // Tree 2
    delay(StairDelay); 
    setLEDA(B00000000);  // Tree 1
    send (msgPIR02.set(sensorBovenActive));
    delay(StairOn); 
    setLEDA(B11111111);  // all off
    setLEDB(B11111111);  // all off
    Serial.println("PIR2--uit");
}}

void effKelder() {
}

void setLEDA(byte value)
{

 Wire.beginTransmission(0x20);
 Wire.write(GPIOA);                            // gpioa
 Wire.write(byte(value));                      // set LEDs volgens waarde 'value'
 Wire.endTransmission();
}

void setLEDB(byte value)
{

 Wire.beginTransmission(0x20);
 Wire.write(GPIOB);                            // gpiob
 Wire.write(byte(value));                      // set LEDs volgens waarde 'value'
 Wire.endTransmission();
}

void bonuseff() {
  
    setLEDB(B11111011);  // Tree 14
    delay(StairDelay); 
    setLEDB(B11110111);  // Tree 13
    delay(StairDelay); 
    setLEDB(B11101111);  // Tree 12
    delay(StairDelay); 
    setLEDB(B11011111);  // Tree 11
    delay(StairDelay); 
    setLEDB(B10111111);  // Tree 10
    delay(StairDelay); 
    setLEDB(B01111111);  // Tree 9
    delay(StairDelay); 
    setLEDA(B11111110);  // Tree 8
    delay(StairDelay); 
    setLEDA(B11111101);  // Tree 7
    delay(StairDelay); ;
    setLEDA(B11111011);  // Tree 6
    delay(StairDelay); ;
    setLEDA(B11110111);  // Tree 5
    delay(StairDelay); 
    setLEDA(B11101111);  // Tree 4
    delay(StairDelay); 
    setLEDA(B11011111);  // Tree 3
    delay(StairDelay); 
    setLEDB(B10111110);  // Tree 2
    delay(StairDelay); 
    setLEDB(B01111111);  // Tree 1
    delay(StairDelay); 
    setLEDA(B10111111);  // Tree 2
    delay(StairDelay); 
    setLEDA(B11011111);  // Tree 3
    delay(StairDelay); 
    setLEDA(B11101111);  // Tree 4
    delay(StairDelay); 
    setLEDA(B11110111);  // Tree 5
    delay(StairDelay); 
    setLEDA(B11111011);  // Tree 6
    delay(StairDelay); 
    setLEDA(B11111101);  // Tree 7
    delay(StairDelay); 
    setLEDA(B11111110);  // Tree 8
    delay(StairDelay); 
    setLEDB(B01111111);  // Tree 9
    delay(StairDelay); 
    setLEDB(B10111111);  // Tree 10
    delay(StairDelay); 
    setLEDB(B11011111);  // Tree 11
    delay(StairDelay); 
    setLEDB(B11101111);  // Tree 12
    delay(StairDelay); 
    setLEDB(B11110111);  // Tree 13
    delay(StairDelay); 
    setLEDB(B11111011);  // Tree 14
}```</code></pre>
]]></description><link>https://forum.mysensors.org/post/69558</link><guid isPermaLink="true">https://forum.mysensors.org/post/69558</guid><dc:creator><![CDATA[Rene046]]></dc:creator><pubDate>Tue, 20 Jun 2017 19:21:05 GMT</pubDate></item><item><title><![CDATA[Reply to Analog to digital how ? on Mon, 19 Jun 2017 06:05:45 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mfalkvidd" aria-label="Profile: mfalkvidd">@<bdi>mfalkvidd</bdi></a></p>
<p dir="auto">Thx</p>
<p dir="auto">I already got it running after a long night ...lol</p>
<p dir="auto">here is what i have sofar...</p>
<pre><code>#define MY_RADIO_NRF24
#define MY_REPEATER_FEATURE
#define MY_DEBUG
//#include &lt;SPI.h&gt;
#include &lt;MySensors.h&gt;
boolean sensorUpperActive;
// boolean sensorBottomActive;
int sensorBottomActive;
int PIR1new;
int PIR1old;
int PIR2new;
int PIR2old;

boolean PIR00;
#define MY_NODE_ID 30
#define CHILD_ID_PIR00 31   // Id of the sensor child
#define CHILD_ID_PIR01 32   // Id of the sensor child
#define CHILD_ID_PIR02 33   // Id of the sensor child

void presentation()
{
// Send the sketch version information to the gateway and Controller
  sendSketchInfo("PIR Sensor", "4.0");

// Register all sensors to gw (they will be created as child devices)
  present(CHILD_ID_PIR00, S_MOTION, "PIR Sensor 0");
  present(CHILD_ID_PIR01, S_MOTION, "PIR Sensor 1");
  present(CHILD_ID_PIR02, S_MOTION, "PIR Sensor 2");
 
 }
// Initialize motion message
 MyMessage msgPIR00(CHILD_ID_PIR00, V_TRIPPED);
 MyMessage msgPIR01(CHILD_ID_PIR01, V_TRIPPED);
 MyMessage msgPIR02(CHILD_ID_PIR02, V_TRIPPED);

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
//  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);

}

// the loop routine runs over and over again forever:
void loop() {
 Pir0lezen();
 
 Pir1lezen();
 Pir2lezen();
 effopneer();
 effneerop();
 Tegelijk();
 
//  delay(1000);        // delay in between reads for stability
}

void Pir0lezen() {
  int PIR0 = analogRead(A0);
  if (analogRead(A0) &gt;=700) 
  {
  Serial.println("PIR0----");
  Serial.println(PIR0);
  PIR00 = true;
}}

void Pir1lezen() {
  int PIR1new = analogRead(A1);
  if (PIR1new != PIR1old &amp;&amp; PIR1new &gt;=700) {
  sensorBottomActive = true ;
  send (msgPIR01.set(sensorBottomActive?"1":"0"));
  // Send status to Domoticz
  Serial.println("PIR1----");
  Serial.println(PIR1new);
  PIR1old = PIR1new;
}}

void Pir2lezen() {
  int PIR2new = analogRead(A2);
  if (PIR2new != PIR2old &amp;&amp; PIR2new &gt;=700) {
  sensorUpperActive = true ;
  send (msgPIR02.set(sensorUpperActive?"1":"0"));
  // Send status to Domoticz
  Serial.println("PIR2----");
  Serial.println(PIR2new);
  PIR2old = PIR2new;
 }
}

void effopneer() {
  if (sensorBottomActive==true &amp;&amp; sensorUpperActive==false){
  // do something
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  sensorBottomActive = false ;  
  send (msgPIR01.set(sensorBottomActive));
  Serial.println("PIR1--uit");
  }
}

void effneerop() {
  if (sensorBottomActive==false &amp;&amp; sensorUpperActive==true){
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  sensorUpperActive = false ;  
  send (msgPIR02.set(sensorUpperActive));
  Serial.println("PIR2--uit");
  }
}

void  Tegelijk() {
  if (sensorBottomActive==true &amp;&amp; sensorUpperActive==true){
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(5000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  sensorUpperActive = false ; 
  sensorBottomActive = false ;  
  send (msgPIR01.set(sensorUpperActive));
  send (msgPIR01.set(sensorBottomActive));
  Serial.println("PIR1&amp;2--uit");
}
}
</code></pre>
]]></description><link>https://forum.mysensors.org/post/69442</link><guid isPermaLink="true">https://forum.mysensors.org/post/69442</guid><dc:creator><![CDATA[Rene046]]></dc:creator><pubDate>Mon, 19 Jun 2017 06:05:45 GMT</pubDate></item><item><title><![CDATA[Reply to Analog to digital how ? on Mon, 19 Jun 2017 05:44:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/rene046" aria-label="Profile: Rene046">@<bdi>Rene046</bdi></a> how about something like this?</p>
<pre><code>void Pirlezen() {
  bool pir = analogRead(A0)&gt;=700;
  send(msgmotion0.set(pir));
}}
</code></pre>
]]></description><link>https://forum.mysensors.org/post/69441</link><guid isPermaLink="true">https://forum.mysensors.org/post/69441</guid><dc:creator><![CDATA[mfalkvidd]]></dc:creator><pubDate>Mon, 19 Jun 2017 05:44:19 GMT</pubDate></item><item><title><![CDATA[Reply to Analog to digital how ? on Mon, 19 Jun 2017 02:25:00 GMT]]></title><description><![CDATA[<pre><code>#define MY_RADIO_NRF24
#define MY_REPEATER_FEATURE
#define MY_DEBUG
//#include &lt;SPI.h&gt;
#include &lt;MySensors.h&gt;
boolean sensorUpperActive;
boolean sensorBottomActive;
boolean PIR00;
#define MY_NODE_ID 30
#define CHILD_ID_PIR00 31   // Id of the sensor child
#define CHILD_ID_PIR01 32   // Id of the sensor child
#define CHILD_ID_PIR02 33   // Id of the sensor child

void presentation()
{
// Send the sketch version information to the gateway and Controller
  sendSketchInfo("PIR Sensor", "4.0");

// Register all sensors to gw (they will be created as child devices)
  present(CHILD_ID_PIR00, S_MOTION, "PIR Sensor 0");
  present(CHILD_ID_PIR01, S_MOTION, "PIR Sensor 1");
  present(CHILD_ID_PIR02, S_MOTION, "PIR Sensor 2");
 
 }
// Initialize motion message
 MyMessage msgPIR00(CHILD_ID_PIR00, V_TRIPPED);
 MyMessage msgPIR01(CHILD_ID_PIR01, V_TRIPPED);
 MyMessage msgPIR02(CHILD_ID_PIR02, V_TRIPPED);

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
//  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);

}

// the loop routine runs over and over again forever:
void loop() {
 Pir0lezen();
 Pir1lezen();
 Pir2lezen();
 effopneer();
 effneerop();
 Tegelijk();
 
//  delay(1000);        // delay in between reads for stability
}

void Pir0lezen() {
  int PIR0 = analogRead(A0);
  if (analogRead(A0) &gt;=700) 
  {
  Serial.println("PIR0----");
  Serial.println(PIR0);
  PIR00 = true;
  // Send status to Domoticz
}}


void Pir1lezen() {
  int PIR1 = analogRead(A1);
  if (analogRead(A1) &gt;=700) {
  sensorBottomActive = true;
  // Send status to Domoticz
  Serial.println("PIR1----");
  Serial.println(PIR1);
   
}}

void Pir2lezen() {
  int PIR2 = analogRead(A2);
  if (analogRead(A2) &gt;=700) {
  sensorUpperActive = true;
  // Send status to Domoticz
  Serial.println("PIR2----");
  Serial.println(PIR2);
  
}}

void effopneer() {
  if (sensorBottomActive==true &amp;&amp; sensorUpperActive==false){
  // do something
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  sensorBottomActive = false ;  
  Serial.println("PIR1--uit");
  }
}

void effneerop() {
  if (sensorBottomActive==false &amp;&amp; sensorUpperActive==true){
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  sensorUpperActive = false ;  
  Serial.println("PIR2--uit");
  }
}

void  Tegelijk() {
  if (sensorBottomActive==true &amp;&amp; sensorUpperActive==true){
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(5000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  sensorUpperActive = false ; 
  sensorBottomActive = false ;  
  Serial.println("PIR1&amp;2--uit");
}
}
</code></pre>
]]></description><link>https://forum.mysensors.org/post/69433</link><guid isPermaLink="true">https://forum.mysensors.org/post/69433</guid><dc:creator><![CDATA[Rene046]]></dc:creator><pubDate>Mon, 19 Jun 2017 02:25:00 GMT</pubDate></item></channel></rss>