TVShow S03E06 KNGI Roanoke


TVShow S03E05 Dogwalkers


A profession that shd be ridiculed and scorned is of course treated as more necessary than dignity in New York City. I for one welcome our climate change rising seas over lords.

Shd be noted, the quality is once again as result of a collaboration of absolutely NOT recommendable recording equipment; old Droid Razr -- and conditions; light bulbs, ambient light and a plastic green table cloth. These elements merge with an inescapable shrug while editing and my internal therapist rewards me with a treat, noting that we may ultimately move on. Moving on...
TVShow S03E04X76 Arduino Back Scratcher Plotter
Digitally ditch the itch --



Currently embracing a sans-work shop and poverty driven cardboard kick for the gluttony of least-interesting of novelty projects now done solely for critical thinking posterity -- other wise known as boredom.

Unable to reach that nook and/or cranny? Open the Back Scratcher Plotter app on your mobile device and identify the spot where then the X/Y axis is sent via bluetooth to the Arduino Uno affixed to the BSP prototype (sly analogy for rubbish) which then actuates to your -- you know what? Stop wasting your time sitting there even reading this nonsense and go some where -- like Typhoon Lagoon!

Ingredients
1. Arduino Uno
2. Bluetooth Module
3. (2) Servos
4. Motor
5. Cardboard
6. String
7. Masking Tape
8. Power Supply
9. Pulley
10. MIT App Inventor

Back-end Code
// Back Scratcher Plotter
// @VijeMiller
// TVMiller.com

#include <Servo.h>
#include <Stepper.h>

// Scratcher
const int stepsrev = 32;
Stepper scratch(stepsrev, 2, 4, 3, 5);

// For Bluetooth Data
String readString, xaxisdata, yaxisdata;

// X Axis
Servo xaxis;
// Y Axis
Servo yaxis;

int xpos = 90;
int ypos = 90; // Stall
int stall = 90;
int yup = 75;
int ydown = 105;
int pos = 90;

void setup() {
Serial.begin(9600);
// Max(?) Speed
scratch.setSpeed(800);
xaxis.attach(6);
yaxis.attach(7);
xaxis.write(xpos);
yaxis.write(ypos);
}

void loop() {

// Bluetooth Data X-Y Axis String?
while (Serial.available()) {
delay(10);
if (Serial.available() > 0) {
char c = Serial.read();
readString += c;
}
}

if (readString.length() > 0) {
// Serial.println(readString);
// X-Y Axis Combined Sent (ex. 368124)
// First 3 Digits
xaxisdata = readString.substring(0, 3);
// Next 3 Digits
yaxisdata = readString.substring(4, 6);

// Convert String to Int
int prexpos = xaxisdata.toInt();
int preypos = yaxisdata.toInt();

// X-Y Based on 480x800 Phone Dimension & MIT App
// X 100 to 350 High 170 to 320 Low
// Y 220 to 560
// Map X to xPos (Actual)
xpos = map(prexpos, 100, 350, 120, 60);
// Map Y to yPos (Delay)
ypos = map(preypos, 220, 560, 0, 6300);

}

// Final Routine
if (readString.length() > 0) {
if (xpos > 90) {
for (pos = 90; pos <= xpos; pos += 1) {
xaxis.write(pos);
delay(40);
}
}
else if (xpos < 90) {
for (pos = 90; pos >= xpos; pos -= 1) {
xaxis.write(pos);
delay(40);
}
}
yaxis.write(yup);
delay(ypos);
yaxis.write(stall);
// Scratch 2048 Steps = 1 Revolution (2 Up/Down)
// Used Stepper bcz Spare Parts -- Sigh!
// 2048 x 7 Seconds = 14336 Steps
scratch.step(14336);

// Return to Start
if (xpos > 90) {
for (pos = xpos; pos >= xpos; pos -= 1) {
xaxis.write(pos);
delay(40);
}
}
else if (xpos < 90) {
for (pos = xpos; pos <= xpos; pos += 1) {
xaxis.write(pos);
delay(40);
}
}
yaxis.write(ydown);
delay(ypos);
yaxis.write(stall);
}

// Reset
readString = "";
}

Archive
http://hackaday.com/2017/05/07/anatomic ... atch-fever
https://hackaday.io/project/21527-arduino-back-scratcher-plotter
https://vid.me/K3Tx
TVShow S03E03X75 Simone Slouchy
After several dismissive attempts (3) -- we have haphazardly weaved together an Arduino Uno with cardboard, ultrasonic sensor, servo(s) and stepper(s) to remind, pester and intolerate your posture.



This project was hobbled together as a slight against the current incarnation of the maker community that at one time had been invested in improving humanity -- now succumbed to vanity and novelty. This project demonstrates that even with little to nothing applied, useless can harbor solution. Plaguing social venues with the antithesis breeds a consequence of evolutionary latency.

Ingredients
1. Arduino Uno
2. Stepper Motor (28BYJ-48)
3. Stepper Driver (ULN2003)
4. Ultrasonic Sensor (HC-SR04)
5. (2) Servos (High Torque)
6. Cardboard
7. Spite

Notations
1. 28BYJ-48 are cheap bcz they are in fact, rubbish -- do not be fooled by reviews documenting "high torque" and "power" bcz they fail to mention they only used these stepper motors to propel insignificantly sized wheeled robots a few paces before over heating and seizing.

2. Per my review above (Notation 1) may I suggest the alternative of either the purchase of or the modification of a servo to operate at 360 degree rotation -- ref. http://tvmiller.com/index.php?entry=entry160123-071155

3. A modified version of this code applied distance reference to alter the position of the shoulder servo relative to the actual distance of the sloucher -- due to impatience, disinterest and coherence of my typical distance, the code is commented but easily accessible.

Slouchy Codey
// Simone Slouchy (3)
// Vije Miller
// TVMiller.com

#include <Servo.h>
#include <Stepper.h>

// Hand
const int stepsPerRevolution = 64;
Stepper hander(stepsPerRevolution, 19, 17, 18, 16);
// Shoulder
Servo shoulder;
// Elbow (
Servo elbow;

// Sensor
#define trigPin 2
#define echoPin 3

// Servo Position
int pos = 30;

// What Action Next?
int state = 0;

// Distance Adjust (Version 2)
// int newdis = 0;

// Serial For Testing
char incom = 0;

void setup() {
Serial.begin(9600);
shoulder.attach(12);
elbow.attach(5);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Set Start Position (Servo)
shoulder.write(15);
elbow.write(30);
// Stepper Starts 0
}

void loop() {

// Sensor Sequence
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Centimeter Conversion
distance = (duration / 2) / 29.1;
// Print for Testing
Serial.print(distance); Serial.println(" cm");

// IF Slouching || > 5cm
// But Not NOT In Chair || < 40cm
if (distance > 5 && distance < 40) {
if (state == 0) {
tap();
// Change State
state = 1;
}
else if (state == 1) {
grab();
state = 2;
}
else if (state == 2) {
assault();
// Reset
state = 0;
}
}
delay(5000);

// Serial For Testing
// if (Serial.available() > 0) {
// incom = Serial.read();
// if (incom == '1') {
// tap();
// }
// else if (incom == '2') {
// grab();
// }
// else if (incom == '3') {
// assault();
// }
// }

// Reset Value (Else)
incom = 0;
}

void tap() {
// Map Distance for Extension (Coming Soon)
// newdis = map(distance, 5, 20, 70, 110);

// Extend Shoulder and Forearm
// Open Hand
for (int i = 0; i <= 600; i++) {
hander.step(-1);
Serial.println("Open");
}
for (pos = 15; pos <= 30; pos += 1) {
shoulder.write(pos);
delay(20);
}
for (pos = 30; pos <= 90; pos += 1) {
shoulder.write(pos);
elbow.write(pos);
delay(20);
}
for (pos = 90; pos <= 145; pos += 1) {
elbow.write(pos);
delay(20);
}
for (pos = 90; pos <= 110; pos += 1) {
shoulder.write(pos);
delay(20);
}
delay(1000);
// Tap
for (pos = 145; pos >= 110; pos -= 1) {
elbow.write(pos);
delay(10);
}
for (pos = 110; pos <= 145; pos += 1) {
elbow.write(pos);
delay(10);
}
for (pos = 145; pos >= 110; pos -= 1) {
elbow.write(pos);
delay(10);
}
for (pos = 110; pos <= 145; pos += 1) {
elbow.write(pos);
delay(10);
}
// Fold Back
for (pos = 110; pos >= 70; pos -= 1) {
shoulder.write(pos);
delay(50);
}
delay(750);
for (pos = 145; pos >= 70; pos -= 1) {
elbow.write(pos);
delay(20);
}
for (pos = 70; pos >= 30; pos -= 1) {
shoulder.write(pos);
elbow.write(pos);
delay(30);
}
for (pos = 30; pos >= 15; pos -= 1) {
shoulder.write(pos);
delay(30);
}
for (int i = 0; i <= 600; i++) {
hander.step(1);
Serial.println("Close");
}
}

void grab() {
// Open Hand
for (int i = 0; i <= 600; i++) {
hander.step(-1);
Serial.println("Open");
}
for (pos = 15; pos <= 30; pos += 1) {
shoulder.write(pos);
delay(20);
}
for (pos = 30; pos <= 90; pos += 1) {
shoulder.write(pos);
elbow.write(pos);
delay(20);
}
for (pos = 90; pos <= 145; pos += 1) {
elbow.write(pos);
delay(20);
}
for (pos = 90; pos <= 110; pos += 1) {
shoulder.write(pos);
delay(20);
}
delay(1000);
// Close Hand
for (int i = 0; i <= 250; i++) {
hander.step(1);
Serial.println("Close");
}
// Lower On Sloucher
for (pos = 145; pos >= 115; pos -= 1) {
elbow.write(pos);
delay(30);
}
// Pull Back
for (pos = 115; pos >= 80; pos -= 1) {
shoulder.write(pos);
elbow.write(pos);
delay(30);
}
// Open Hand
for (int i = 0; i <= 250; i++) {
hander.step(-1);
Serial.println("Open");
}
// Extend Forearm
for (pos = 80; pos <= 145; pos += 1) {
elbow.write(pos);
delay(30);
}
// Fold Back
for (pos = 80; pos >= 50; pos -= 1) {
shoulder.write(pos);
delay(40);
}
for (pos = 145; pos >= 50; pos -= 1) {
elbow.write(pos);
delay(30);
}
for (pos = 50; pos >= 30; pos -= 1) {
elbow.write(pos);
shoulder.write(pos);
delay(40);
}
for (pos = 30; pos >= 15; pos -= 1) {
shoulder.write(pos);
delay(40);
}
// Close Hand
for (int i = 0; i <= 600; i++) {
hander.step(1);
Serial.println("Close");
}
}

void assault() {
for (int i = 0; i <= 600; i++) {
hander.step(-1);
Serial.println("Open");
}
for (pos = 15; pos <= 30; pos += 1) {
shoulder.write(pos);
delay(20);
}
for (pos = 30; pos <= 90; pos += 1) {
shoulder.write(pos);
elbow.write(pos);
delay(20);
}
for (pos = 90; pos <= 145; pos += 1) {
elbow.write(pos);
delay(20);
}
for (pos = 90; pos <= 110; pos += 1) {
shoulder.write(pos);
delay(20);
}
delay(1000);
for (int i = 0; i <= 250; i++) {
hander.step(1);
Serial.println("Close");
}
for (pos = 145; pos >= 115; pos -= 1) {
elbow.write(pos);
delay(30);
}
for (pos = 115; pos >= 60; pos -= 1) {
shoulder.write(pos);
elbow.write(pos);
delay(30);
}
for (int i = 0; i <= 250; i++) {
hander.step(-1);
Serial.println("Open");
}
for (pos = 60; pos <= 80; pos += 1) {
elbow.write(pos);
delay(30);
}
delay(1500);
for (pos = 60; pos <= 80; pos += 1) {
shoulder.write(pos);
delay(20);
}
for (pos = 80; pos <= 115; pos += 1) {
shoulder.write(pos);
elbow.write(pos);
delay(5);
}
for (pos = 115; pos <= 135; pos += 1) {
elbow.write(pos);
delay(5);
}
delay(500);
for (pos = 115; pos >= 80; pos -= 1) {
shoulder.write(pos);
delay(10);
}
for (pos = 135; pos <= 80; pos += 1) {
elbow.write(pos);
delay(30);
}
for (pos = 80; pos >= 30; pos -= 1) {
shoulder.write(pos);
elbow.write(pos);
delay(40);
}
for (pos = 30; pos >= 15; pos -= 1) {
shoulder.write(pos);
delay(40);
}
for (int i = 0; i <= 600; i++) {
hander.step(1);
Serial.println("Close");
}
}

Archive
Hackaday.io - Simone Slouchy
Instructables - Simone Slouchy
Kathrine Becker (Suzy Sellout) - Gone For A While
Failed Simone Slouchy Endeavor 1 and 2
Pursuing an attempt at spite, ironically -- the humorous self deprecating variety -- we have now twice failed at constructing an Arduino project to which we shall explain in detail further following a hypothetical successful third attempt soon...and subsequent fourth attempt. Son of a-- any who -- our first attempt was interrupted by time and our second venture was deterred by stepper motors (28BYJ-48) proving to be far more feeble than anticipated.