Timing is everything

The Talking Centipede


A single guy decided life would be more fun 

if he had a pet.

So he went to the pet store 

and told the owner 

that he wanted to buy an unusual pet.

After some discussion, 

he finally bought a talking centipede, 

(100-legged bug), 

which came in a little white box 

to use for his house.

He took the box back home, 

found a good spot for the box, 

and decided he would start off  

by taking his new pet 

to church with him.
So he asked the centipede in the box,
  

“Would you like to go 

to church with me today? 

We will have a good time.”

But there was no answer 

from his new pet.

This bothered him a bit, 

but he waited a few minutes 

and then asked again,   

“How about going 

to church with me 

and receive blessings?”

But again, 

there was no answer 

from his new friend and pet. 

So he waited 

a few minutes more, 

thinking about the situation.

The guy decided 

to invite the centipede 

one last time.

This time 

he put his face up against 

the centipede’s house and shouted,  

“Hey, in there! 

Would you like to go 

to church with me 

and learn about God?” 

… YOU ARE GOING TO LOVE THIS … 


This time, 

a little voice 

came out of the box, 

“I heard you the first time!
I’m putting on my shoes!”
 

  

              Lesson for Today:

 

              Learn to be patient.

 

The object of your desires

I’m coming to grips with an inkling of an understanding of animism — also known as objectum sexuality.

What is attractive to one is not necessarily attractive to another.

Thus, what is a robot and what level of cybernetic symbiosis determines when we can love a person who is somewhere between 0% and 100% biologically born?

13,325 days/sols to go

While bouncing around in my laboratory/playground, I sometimes forget about the larger goal of Moon/Mars settlement, a mere 13,325 days/sols to go.

We are making a lot of progress in that area and, for my colleagues, I thank you — planet Earth — for providing us the resources and means to make intentional space exploration possible.

After all, waiting around for a large comet to hit our celestial sphere and send chunks out of Earth’s gravitational field is beyond virtuous patience.

Let us give praise to those who focus on the longterm, putting aside the daily distractions that wish to make mountains out of political footballs.

We maintain more than one storyline, a few that give hope to the destitute and desperate, a few that produce more wealth for the wealthy, all in the plans to spread life-as-we-know-it as soon as viably possible, rather than as soon as feasibly feeble.

Now, back to the story subplot currently in progress…the development of robots by a small group of hackers thinking inside and outside of Pandora’s Box.

What sloppy code looks like in process

I never said I was a clean software code writer.

I write code like I draw — tracing and [re]sketching until I get a good feel for the drawing technique.

These lines of code are my “doodles”:

/* Read two one ultrasonic sensors and two PIR sensors, control five LEDs and two servos
Based on code by
David A. Mellis, Tom Igoe,
Kimmo Karvinen and Tero Karvinen
Updated by Joe Saavedra, 2010
http://BotBook.com
*/
/*****************************************************************************/
//    Function: If the sensor detects movement in its detecting range,
//              the LED is turned on. Otherwise, the LED is turned off.
//  Hardware: Grove – PIR Motion Sensor, Grove – LED
//    Arduino IDE: Arduino-1.0
//    Author:     Frankie.Chu
//    Date:      Jan 21,2013
//    Version: v1.0
//    by http://www.seeedstudio.com
//      Modified by: RadioShack Corporation
//      Date: July 18, 2013
//
//  This library is free software; you can redistribute it and/or
//  modify it under the terms of the GNU Lesser General Public
//  License as published by the Free Software Foundation; either
//  version 2.1 of the License, or (at your option) any later version.
//
//  This library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public
//  License along with this library; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
/*******************************************************************************/
/*macro definitions of PIR motion sensor pins and LED pins*/
#define PIR_MOTION_SENSOR_LEFT 2//Use pin 2 to receive the signal from the left PIR module
#define PIR_MOTION_SENSOR_RT 5//Use pin 5 to receive the signal from the right PIR module
#define LED_LEFT    6//the LED is connected to D6 of Arduino
#define LED_RT    9//the LED is connected to D9 of Arduino
// Number Two: Sweep
// by BARRAGAN
// For more information on this circuit, go to http://www.oomlout.com/oom.php/products/ardx/circ-04

/*#define trigPin 12 // from forum.arduino.cc
#define echoPin 13 // from forum.arduino.cc*/
#include <Servo.h>

Servo myservo1;  // create servo object to control a servo
Servo myservo2;  // a maximum of eight servo objects can be created

int pos = 0;    // variable to store the servo position

//const int leftPing = 3;
const int rightPing = 12;

//const int leftPIRLed = 6;
//const int leftUSLed1 = 7;
const int rightUSLed1 = 8;
//const int rightPIRLed = 9;
//const int leftUSLed2 = 10;
//const int leftUSLed3 = 11;
const int rightUSLed2 = 11;
const int rightUSLed3 = 3;

const int closeD = 10; // cm; maximum closest distance – 0 to 10 cm range
const int midD = 20; // cm; maximum hand distance – 10 to 20 cm range
const int farD = 30; // cm; maximum farthest distance – 20 to 30 cm range

void setup()
{
myservo1.attach(10);  // attaches the servo 1 on pin 10 to the servo object
myservo2.attach(4);  // attaches the servo 2 on pin 4 to the servo object
pinsInit();

Serial.begin(9600);
//  pinMode(leftPIRLed, OUTPUT);
//  pinMode(leftUSLed1, OUTPUT);
//  pinMode(leftUSLed2, OUTPUT);
//  pinMode(leftUSLed3, OUTPUT);
//  pinMode(rightPIRLed, OUTPUT);
pinMode(rightUSLed1, OUTPUT);
pinMode(rightUSLed2, OUTPUT);
pinMode(rightUSLed3, OUTPUT);

//pinMode(trigPin, OUTPUT); //from forum.arduino.cc
//pinMode(echoPin, INPUT); //from forum.arduino.cc
}

void loop()
{
if(isPeopleDetectedLeft())//if the left PIR sensor detects movement, turn on LED.
turnOnLEDLeft();
else//if the left PIR sensor does not detect movement, do not turn on LED.
turnOffLEDLeft();
if(isPeopleDetectedRt())//if the right PIR sensor detects movement, turn on LED.
turnOnLEDRt();
else//if the right PIR sensor does not detect movement, do not turn on LED.
turnOffLEDRt();
//  ping(leftPing, leftUSLed1, leftUSLed2, leftUSLed3);
ping(rightPing, rightUSLed1, rightUSLed2, rightUSLed3);
//  delay(500);
/*int duration, distance,pos=0,i;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2)/29.1;
Serial.print(distance);
Serial.println(” cm”);
//if(distance<15)
if(rightPing<5)
{
myservo.write(90);
}
else{
myservo.write(0);
}
delay(10);*/

/*    for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees
{                                  // in steps of 1 degree
myservo.write(pos);              // tell servo to go to position in variable ‘pos’
delay(15);                       // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
{
myservo.write(pos);              // tell servo to go to position in variable ‘pos’
delay(15);                       // waits 15ms for the servo to reach the position
}*/
}

void pinsInit()
{
pinMode(PIR_MOTION_SENSOR_LEFT, INPUT);
pinMode(LED_LEFT,OUTPUT);
pinMode(PIR_MOTION_SENSOR_RT, INPUT);
pinMode(LED_RT,OUTPUT);

}
void turnOnLEDLeft()
{
digitalWrite(LED_LEFT,HIGH);
myservo2.write(180);
}
void turnOffLEDLeft()
{
digitalWrite(LED_LEFT,LOW);
myservo2.write(90);
}
void turnOnLEDRt()
{
digitalWrite(LED_RT,HIGH);
myservo2.write(0);
}
void turnOffLEDRt()
{
digitalWrite(LED_RT,LOW);
myservo2.write(90);
}
/***************************************************************/
/*Function: Detect whether there is movement in the PIR sensor’s detecting range*/
/*Return:-boolean, true is movement is detected.*/
boolean isPeopleDetectedLeft()
{
int sensorValue = digitalRead(PIR_MOTION_SENSOR_LEFT);
if(sensorValue == HIGH)//if the sensor value is HIGH?
{
return true;//yes,return true
}
else
{
return false;//no,return false
}
}
boolean isPeopleDetectedRt()
{
int sensorValue = digitalRead(PIR_MOTION_SENSOR_RT);
if(sensorValue == HIGH)//if the sensor value is HIGH?
{
return true;//yes,return true
}
else
{
return false;//no,return false
}
}
boolean ping(int pingPin, int ledPin1, int ledPin2, int ledPin3)
{
int d = getDistance(pingPin); // cm
boolean pinActivated1 = false;
boolean pinActivated2 = false;
boolean pinActivated3 = false;
if (d < closeD) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
myservo1.write(180);
pinActivated1 = true;
pinActivated2 = false;
pinActivated3 = false;
} else {
if (d < midD) {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
myservo1.write(90);
pinActivated1 = false;
pinActivated2 = true;
pinActivated3 = false;
}
else {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
myservo1.write(0);
pinActivated1 = false;
pinActivated2 = false;
pinActivated3 = true;
}
}
return pinActivated1, pinActivated2, pinActivated3;
}

int getDistance(int pingPin)
{
long duration, inches, cm;

pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);

pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);

inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print(“in, “);
Serial.print(cm);
Serial.print(“cm”);
Serial.println();
return(cm); // You could also return inches
}

long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}