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?

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;
}

 

Advice from philanthropists

Some words of wisdom from the speakers at the Summit on Philanthropy:

  • If you have a vision, things flow along and follow that vision
  • Vision without execution is hallucination
  • A good project needs a strong emotional component
  • Protect your capital and grow your investment wisely over time
  • Philanthropy equals exercise and promotion of values — in other words, what are your passions?
  • Philanthropy is about investment of your time first (volunteer hours) and then your financial resources
  • To live, we must give back to others using our skills and talents in service
  • Philanthropy is a way of life, a way of thinking, not just a series of events — be willing to give the clothes off your back and help individuals become better people
  • Giving starts with us — diverting our daily discretionary funds (e.g., giving up our snacks/Cokes for a week and convincing others to do the same) toward community efforts
  • The way to build a charity is to start one
  • The best philanthropic project starts with your family — talk to your spouse/kids and get them involved; remember that “no” is just as important as “yes”; make sure it fits into your strategic life plans/vision
  • Nonprofit organisations must know the cost of raising funds
  • “Don’t sign up — show up!”
  • You don’t have to be Mother Theresa to have a positive impact on your community
  • Be civically obsessed and keep the spirit of giving alive and well
  • Projects successful because they came out of what the community wanted for itself
  • “If you want to go fast, go alone; if you want to go far, go together.” — African proverb
  • Your mission is to increase giving.  Why?  To strengthen the community.

Make: Robotic Hacks, the Robotic Experts presentation

Tonight on a Google+ Hangout, we listened to a group of robotic experts, many in the 3D DIY printing specialty, who talked about their creations:

…second installment of Robot Hacks, a Maker Session.
This will be a team presentation featuring +Michael Overstreet (I, bioloid) talking about his 3D printed humanoid robotic projects; Aaron Park (Robotis) open sourced DARwIn-mini, Dr Chi Thai (University of Georgia) and +Michael Paulishen programming the open sourced CM-904; +Erin RobotGrrl shows us RoboBrrd and her 3D printed robot; +Heriberto Reynoso (NASA) teaches kids how to build and program robots; and +lem fugitt talks about robot developments outside of the US and the application of 3D printing to robot design.

Join the conversation on the Robot Hacks community page.

Robot Hacks is the latest Maker Session presented by Make magazine and +General Electric. This 3 week program is designed to engage teams of makers around the world to participate in an open source “Robot Hacking and Making” program.

The standout image for me amongst all the cool ideas and commercial products?

A high school robotics education program:

robot-experts-presentation-24

To be clear, robotic development programs by full-grown humans is important but we old ones (say, age 35+) are merely pointing the way for the next generation.

In any case, here are some more screenshots of tonight’s presenters with their “children”:

robot-experts-presentation-08

Oops!  Technical difficulties — video echo, echo echo echoechoecho…

robot-experts-presentation-10a

robot-experts-presentation-13

robot-experts-presentation-17

robot-experts-presentation-02 robot-experts-presentation-29

Thanks to everyone involved, including the behind-the-scenes people who maintain servers/routers, design webcams and otherwise keep the Internet loosely bound together across the globe and beyond!