|!Punctuation|!Location|!Function|\n|{{{@@...@@}}}|surrounding text|@@highlighted text@@|\n|{{{//...//}}}|surrounding text|//italicized text//|\n|{{{==...==}}}|surrounding text|==strikethrough text==|\n|{{{''...''}}}|surrounding text|''boldfaced text''|\n|{{{__...__}}}|surrounding text|__underlined text__|\n|{{{[[text|url]]}}}|around text/url pair|[[text|http://gri.gallaudet.edu/]] link to url|\n|{{{ {...} }}}|''__tripled__'' surrounding text|{{{in-line literal text}}}|\n|{{{ {...} }}}|''__tripled__'' surrounding ''__lines__''|literal block|\n|{{{<<<}}}|surrounding ''__lines__''|blockquotes|\n|{{{!}}}|at start of line|subheading|\n|{{{|...|...|}}}|line sectioned by vertical bars|table row|\n|{{{!}}}|in a table|!table heading|\n|{{{----}}}|alone on line|horizontal rule|\n|{{{*}}}|at start of line|bulleted list item|\n|{{{#}}}|at start of line|numbered list item|\nsource: Kevin Cole, January 2007
TTiddlyWiki uses Wiki style markup, a way of lightly "tagging" plain text so it can be transformed into HTML. Edit this Tiddler to see samples.\n\n! Header Samples\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n\n! Unordered Lists:\n* Lists are where it's at\n* Just use an asterisk and you're set\n** To nest lists just add more asterisks...\n***...like this\n* The circle makes a great bullet because once you've printed a list you can mark off completed items\n* You can also nest mixed list types\n## Like this\n\n! Ordered Lists\n# Ordered lists are pretty neat too\n# If you're handy with HTML and CSS you could customize the [[numbering scheme|http://www.w3schools.com/css/pr_list-style-type.asp]]\n## To nest, just add more octothorpes (pound signs)...\n### Like this\n* You can also\n** Mix list types\n*** like this\n# Pretty neat don't you think?\n\n! Tiddler links\nTo create a Tiddler link, just use mixed-case WikiWord, or use [[brackets]] for NonWikiWordLinks. This is how the GTD style [[@Action]] lists are created. \n\nNote that existing Tiddlers are in bold and empty Tiddlers are in italics. See CreatingTiddlers for details.\n\n! External Links\nYou can link to [[external sites|http://google.com]] with brackets. You can also LinkToFolders on your machine or network shares.\n\n! Images\nEdit this tiddler to see how it's done.\n[img[http://img110.echo.cx/img110/139/gorilla8nw.jpg]]\n\n!Tables\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|colored| center |\n|caption|c\n\nFor a complex table example, see PeriodicTable.\n\n! Horizontal Rules\nYou can divide a tiddler into\n----\nsections by typing four dashes on a line by themselves.\n\n! Blockquotes\n<<<\nThis is how you do an extended, wrapped blockquote so you don't have to put angle quotes on every line.\n<<<\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n\n! Other Formatting\n''Bold''\n==Strike==\n__Underline__\n//Italic//\nSuperscript: 2^^3^^=8\nSubscript: a~~ij~~ = -a~~ji~~\n@@highlight@@\n@@color(green):green colored@@\n@@bgcolor(#ff0000):color(#ffffff):red colored@@\n
SNOBOT
A robotic snow blower
[[overview]]
Many challenges to make a snobot...\n\n* [[modding the chair|TheChair]] \n* [[batteries]]\n* [[attaching the arduino to the controller|arduinoInterface]]\n* [[not to mention software|controlSoftware]]\n* [[likely to start with remote control|remoteControl]]\n
SnowbotInvacareControl
{{{\n/*\n Snobot Controller\n \n This sketch is used to control the snobot \n Written by Christopher P. Yarger cpyarger@gmail.com\n Copyright 2013 CPYarger IT Services. http://cpyarger.com\n Released under GPLv3.\n \n \n \n Controls(All CAPS):\n \n Stop = Q\n Forward = W\n Backward = S\n Left = A\n Rught = D\n Speed-Up = O\n Speed-Down = L \n Run_Demo = T\n \n NOTES:\n \n * Speed control returns values between 25 and 255.\n * The stop command bypasses the speed controller, \n with the excaption of issuing a speed reset command.\n * You can only change speed when the motors are in use.\n * any attempt to change speed otherwise will result in \n the value being reset to 25\n \n */\n#include <NewPing.h>\n#define TRIGGER_PIN 22\n#define ECHO_PIN 22\n#define MAX_DISTANCE 500\n\nNewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);\nint rALI = 6;\nint rBLI = 8;\nint lALI = 9; // LED connected to digital pin 9\nint lBLI = 10;\nfloat sspeed = 55;\nfloat cspeed = 0;\nunsigned char last; \nint turn_delay = 200; //delay used to smooth out driving\nint cmax = 150; // max speed. no higher than 250\nint cinterval = 10; // speed increase / decrease interval\nint avoid_on = 0;\nint avoid_speed=55; //Turning speed for object avoidence\nint pingd = 50; //object detection distace\nint avoidState = '0';\n\nvoid setup() { \n // we set all 4 control pins to output\n pinMode(rALI, OUTPUT);\n pinMode(rBLI, OUTPUT);\n pinMode(lALI, OUTPUT);\n pinMode(lBLI, OUTPUT); \n // Lets start the serial\n Serial.begin(9600);\n Serial.println(" Welcome To the snobot controls"); \n Serial.println(" Drive Safely!");\n\n Serial1.begin(9600);\n Serial1.println(" Welcome To the snobot controls"); \n Serial1.println(" Drive Safely!");\n help();\n} \nvoid help(){\n Serial.println(" Controls(All lower case):");\n Serial.println(" Stop = q");\n Serial.println(" Forward = w");\n Serial.println(" Backward = s");\n Serial.println(" Left = a");\n Serial.println(" Right = d");\n Serial.println(" Speed-Up = o");\n Serial.println(" Speed-Down = l");\n Serial.println(" Distance = x"); \n Serial.println(" Run_Demo = t"); \n Serial.println(" Help = h");\n\n Serial1.println(" Controls(All CAPS):");\n Serial1.println(" Stop = q");\n Serial1.println(" Forward = w");\n Serial1.println(" Backward = s");\n Serial1.println(" Left = a");\n Serial1.println(" Right = d");\n Serial1.println(" Speed-Up = o");\n Serial1.println(" Speed-Down = l"); \n Serial1.println(" Distance = x"); \n Serial1.println(" Run_Demo = t"); \n Serial1.println(" Help = h");\n}\nvoid Left(int mspeed){\n\n digitalWrite(rBLI, LOW);\n digitalWrite(lALI, LOW);\n analogWrite(rALI, mspeed/2);\n analogWrite(lBLI, mspeed/2);\n delay(turn_delay);\n}\nvoid Right(int mspeed){\n digitalWrite(rALI, LOW);\n digitalWrite(lBLI, LOW);\n analogWrite(rBLI, mspeed/2);\n analogWrite(lALI, mspeed/2);\n}\nvoid Forward(int mspeed){\n digitalWrite(rBLI, LOW);\n digitalWrite(lBLI, LOW);\n analogWrite(rALI, mspeed);\n analogWrite(lALI, mspeed);\n}\nvoid Backward(int mspeed){\n digitalWrite(rALI, LOW);\n digitalWrite(lALI, LOW);\n analogWrite(rBLI, mspeed);\n analogWrite(lBLI, mspeed);\n\n}\nvoid Stop(){\n // by resetting all control pins to low the motors turn off.\n digitalWrite(rALI, LOW);\n digitalWrite(lALI, LOW);\n digitalWrite(rBLI, LOW);\n digitalWrite(lBLI, LOW);\n speedy('S');\n}\nvoid tStop(){\n // by resetting all control pins to low the motors turn off.\n digitalWrite(rALI, LOW);\n digitalWrite(lALI, LOW);\n digitalWrite(rBLI, LOW);\n digitalWrite(lBLI, LOW);\n delay(turn_delay);\n\n}\n\nint serialRead(){\n //if (Serial.available() > 0) {\n switch(Serial.read()){\n\n case 'w': //Forward\n tStop();\n ctrl('B');\n last = 'B';\n Serial.print("Forward: ");\n Serial.println(speedy('R'));\n break;\n case 's': //Backward\n Serial.print("Backward: ");\n Serial.println(speedy('R'));\n tStop();\n\n ctrl('F');\n last = 'F';\n break;\n case 'a': // Left\n Serial.print("Left: ");\n Serial.println(speedy('R'));\n tStop();\n\n ctrl('R');\n last = 'R';\n break; \n case 'd': //Right\n Serial.print("Right: ");\n Serial.println(speedy('R'));\n tStop();\n\n ctrl('L');\n last = 'L';\n break;\n case 'o': // Speed-Up\n ctrl('U');\n Serial.print("Speed_up: ");\n Serial.println(speedy('R'));\n break;\n case 'l': //Speed-Down\n ctrl('D');\n Serial.print("Speed_Down: ");\n Serial.println(speedy('R'));\n break;\n case 't': //Run_Demo\n ctrl('T');\n last = 'T';\n break;\n case 'q': //Stop\n Serial.print("Stop: ");\n Serial.println(speedy('R'));\n ctrl('S');\n last='S';\n break;\n case 'h':\n help();\n break;\n case 'x':\n print_dist();\n break;\n case 'e':\n avoid_toggle('S');\n break;\n default:\n ctrl(last);\n break;\n\n }// End switch\n //} //end if SERIAL READ\n //if (Serial1.available() > 0) {\n switch(Serial1.read()){\n\n case 'w': //Forward\n tStop();\n ctrl('B');\n last = 'B';\n Serial1.print("Forward: ");\n Serial1.println(speedy('R'));\n break;\n case 's': //Backward\n tStop();\n Serial1.print("Backward: ");\n Serial1.println(speedy('R'));\n ctrl('F');\n last = 'F';\n break;\n case 'a': // Left\n tStop();\n Serial1.print("Left: ");\n Serial1.println(speedy('R'));\n ctrl('R');\n last = 'R';\n break; \n case 'd': //Right\n tStop();\n Serial1.print("Right: ");\n Serial1.println(speedy('R'));\n ctrl('L');\n last = 'L';\n break;\n case 'o': // Speed-Up\n ctrl('U');\n Serial1.print("Speed_up: ");\n Serial1.println(speedy('R'));\n break;\n case 'l': //Speed-Down\n ctrl('D');\n Serial1.print("Speed_Down: ");\n Serial1.println(speedy('R'));\n break;\n case 't': //Run_Demo\n ctrl('T');\n last = 'T';\n break;\n case 'q': //Stop\n Serial1.print("Stop: ");\n Serial1.println(speedy('R'));\n ctrl('S');\n last='S';\n break;\n case 'h':\n help();\n break;\n default:\n ctrl(last);\n break;\n\n }// End switch\n //} //end if SERIAL READ\n}//end Serial1Read\nvoid ctrl(unsigned char ctr){\n unsigned char Last = ctr;\n switch(Last){\n\n case 'F':\n\n Forward(speedy('R'));\n Last='F';\n break;\n case 'B':\n\n Backward(speedy('R'));\n Last='B';\n break;\n case 'R':\n\n Left(speedy('R'));\n Last='R';\n break; \n case 'L':\n Right(speedy('R'));\n Last='L';\n break;\n case 'U':\n speedy('U');\n break;\n case 'D':\n speedy('D');\n break;\n case 'T':\n Demo();\n Last='S';\n break;\n case 'S':\n Stop();\n Last = 'S';\n break;\n\n\n }// End switch\n\n}//end Serial1Read\nint speedy(unsigned char sCtl){\n\n switch(sCtl){\n case 'U': \n // if (cspeed >= 250){ cspeed=255;}\n // else { cspeed+=25; }\n cspeed+=cinterval;\n // cspeed = constrain(cspeed, 0, 255);\n\n break;\n case 'D': \n // if (cspeed <= 5){ cspeed=0;}\n // else { cspeed-=25; }\n cspeed-=cinterval;\n\n break;\n case 'S':\n cspeed=0;\n break;\n case 'R':\n cspeed = constrain(cspeed, 0, cmax);\n // cspeed = max(cspeed, 0); \n return cspeed;\n break;\n }\n\n}\nvoid Demo(){\n Backward(sspeed); //go backwards at full speed\n Serial1.print("Backward: ");\n Serial1.println(speedy('R'));\n Serial.print("Backward: ");\n Serial.println(speedy('R'));\n delay (500); \n Forward(sspeed);\n Serial1.print("Forward: ");\n Serial1.println(speedy('R'));\n Serial.print("Forward: ");\n Serial.println(speedy('R'));\n delay (500);\n Left(sspeed);\n Serial1.print("Left: ");\n Serial1.println(speedy('R'));\n Serial.print("Left: ");\n Serial.println(speedy('R'));\n delay (500);\n Right(sspeed);\n Serial1.print("Right: ");\n Serial1.println(speedy('R'));\n Serial.print("Right: ");\n Serial.println(speedy('R'));\n delay (500);\n Stop();\n Serial1.print("Stop: ");\n Serial1.println(speedy('R'));\n Serial.print("Stop: ");\n Serial.println(speedy('R'));\n\n delay (500);\n}//end demo\nvoid Run(){\n\n serialRead();\n}\nvoid speedTest(){\n serialRead();\n Serial1.print("Speed: ");\n Serial1.println(speedy('R'));\n Serial.print("Speed: ");\n Serial.println(speedy('R'));\n\n}\nvoid runTest(){\n Run();\n}\nvoid avoid(){\n if (avoid_toggle('R') =='1'){\n if ( sonar.ping_in() < pingd){\n // Backward(20);\n //Stop();\n//Serial.println("OBJECT AHEAD....AVOIDING!");\n while (sonar.ping_in()<pingd) {\n Right(avoid_speed);\n delay(10);\n }//end while\n Forward(speedy('R'));\n }//if ping< pingd\n }// if avoid_on\n} //end avoid\nint avoid_toggle(int tgl){\n switch (tgl){\n case 'S':\n switch (avoidState){\n case '0':\n avoidState= '1';\n Serial.println("Avoidence on");\n break; \n case '1':\n avoidState='0';\n Serial.println("Avoidence off");\n break; \n } \n break;\n case 'R':\n return avoidState;\n break; \n }\n}\n\nvoid print_dist(){\n Serial.print("Distance: ");\n Serial.print(sonar.ping_in());\n Serial.println(" in.");\n Serial.print("avoidance Distance: ");\n Serial.print(pingd);\n Serial.println(" in.");\n Serial1.print("Distance: ");\n Serial1.print(sonar.ping_in());\n Serial1.println(" in.");\n Serial1.print("avoidance Distance: ");\n Serial1.print(pingd);\n Serial1.println(" in.");\n}\nvoid loop() { \n avoid();\n //speedTest(); //tests speed control\n //Demo(); // show working LEDs\n runTest(); //print's current speed to serial line\n //Run();// Run the program\n}\n}}}
Type the text for 'New Tiddler'
The Snobot team:\n\n[[Paul Flint |http://www.flint.com/flint/Flint_vita.html]]\n[[Chris Yarger |http://www.cpyarger.com/resume]]
[[''Invacare'' Ohio 44035|http://www.invacare.com]]\n\n\n\nRanger II MWD\nSN\n11802J0004\n\nModel Number\nRIIMWD-TS INVACARE CORP. RANGER II POWERED WHEELCHAIR \n\n1070542\n\n[[Control unit|SnowbotInvacareControl]] \n\n[[Chair Manual|http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CGEQFjAF&url=http%3A%2F%2Fwww.scootaround.com%2Fresources%2Fmanuals%2Finvacare%2FInvacare%2520Stomer%2520Series%2520-%2520Ranger%25202%2520MWD%2520FWD%2520Owner%2527s%2520Manual.pdf&ei=kLBUUPTSL4-u0AHLh4D4BQ&usg=AFQjCNEdYE3my62ODtEPdbAKspqpx_uSlQ&sig2=-u12ZXsIufeCcKhjjOIWGg]]\n\nhttp://www.invacare.com/HQ/Attachment/20040226/Number_12_MKIV_Service_Manual_2.pdf\n\nhttp://letsmakerobots.com/node/27076\n\n[[Control Chip - newer version|http://www.icbase.com/File/PDF/ITS/ITS05710106.pdf00
Here is a pinout of the DIN 6 Connector:\n[img[http://docbox.flint.com/~flint/snobot/video.output.din6.connector.png]]\n\n|! Pin|! Signal|! Color |\n| 1|serial data 1| |\n| 2|serial data 2| |\n| 3|15 v dc| |\n| 4|common(b-)| |\n| 5|15 v switched| |\n| 6|N.C.| |\n| 7||test |\n
\n[[Color apples blue tooth|http://www.colorapples.com/jymcu-arduino-bluetooth-wireless-serial-port-module-p-143310.html]]\n[[bluetooth modules market|https://www.google.com/search?sourceid=chrome&ie=UTF-8&q=jymcu-arduino-bluetooth-wireless-serial-port-module#q=jy+mcu-arduino-bluetooth-wireless-serial-port-module&hl=en&safe=off&prmd=imvns&source=lnms&tbm=shop&sa=X&ei=Q85YUMaKJee80QHcrICQDQ&ved=0CA4Q_AUoBQ&fp=1&biw=1024&bih=611&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&cad=b&sei=Cs9YUJHoJ8HF0QG30oDQDA]]\n[[Trossen Robotics|http://www.trossenrobotics.com/store/p/6508-L298-Dual-H-Bridge-Motor-Driver.aspx]]\n[[Pololu Robotics|http://www.pololu.com/catalog/product/537]]\n\n[[rasbury pi procurement|http://www.element14.com/community/groups/raspberry-pi/blog/2012/09/19/brewing-beer-with-raspberry-pi]]
INVACARE Control Unit\nSerial Number 10699C0124\nModel Number 1061968\n\nControl Module for Ranger II MWD\n\n[[Control Module for Ranger II MWD current diagram|http://docbox.flint.com/~flint/snobot/Motor-controller-pinout_2013-06-06.pdf]]\n\nbuy INVACARE Ranger II MWD 10699C0124\n\n[[SnobotInvacareControlII]]\n\n\n[[Wheelchair Controller MKIV RII 80A 1106819 Invacare Torque SP|http://www.ebay.com/itm/Wheelchair-Controller-MKIV-RII-80A-1106819-Invacare-Torque-SP-/280948113856?pt=LH_DefaultDomain_0&hash=item4169d001c0]]\n\nWheelchair Controller MKIV RII 80A 1061968 Invacare Torque SP\n\n[[Source:|http://www.invacare.com/HQ/EDITORIAL/20101008/Invacare%20Parts%20Pricelist%201106.pdf]]\n1055623E RECON CONTROLLER MK IV INT 9153629529 $1,110.20\n1072223 CONTROLLER ASBLY AF 6-6-99 9153637115 $937.80\n\n[[Source:|http://www.invacare.com/pdfs/200801_Pricelist.pdf]]\n0018700 Recon Max Controller 4.0 $ 5 67.53\n0018900 Max Controller 4.4 9153632120 $ 1,259.84\n\n[[Shop for part|http://shop.clicknshop.com/?kwi=cHNwaWQ9NTkmY2xpY2tpZD0yNDI1MjE2Jmt3aWQ9MzAwMjQ5JmNwYz0wLjAwMA%3D%3D&query=used+invacare&pspid=1]]
{{{\n\n/*\n Snobot Controller\n \n This sketch is used to control the snobot \n Written by Christopher P. Yarger cpyarger@gmail.com\n Copyright 2013 CPYarger IT Services. http://cpyarger.com\n Released under GPLv3.\n \n \n \n Controls(All CAPS):\n \n Stop = Q\n Forward = W\n Backward = S\n Left = A\n Rught = D\n Speed-Up = O\n Speed-Down = L \n Run_Demo = T\n \n NOTES:\n \n * Speed control returns values between 25 and 255.\n * The stop command bypasses the speed controller, \n with the excaption of issuing a speed reset command.\n * You can only change speed when the motors are in use.\n * any attempt to change speed otherwise will result in \n the value being reset to 25\n \n */\n#include <NewPing.h>\n#define TRIGGER_PIN 22\n#define ECHO_PIN 22\n#define MAX_DISTANCE 500\n\nNewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);\nint rALI = 6;\nint rBLI = 8;\nint lALI = 9; // LED connected to digital pin 9\nint lBLI = 10;\nfloat sspeed = 55;\nfloat cspeed = 0;\nunsigned char last; \nint turn_delay = 200; //delay used to smooth out driving\nint cmax = 150; // max speed. no higher than 250\nint cinterval = 10; // speed increase / decrease interval\nint avoid_on = 0;\nint avoid_speed=55; //Turning speed for object avoidence\nint pingd = 50; //object detection distace\nint avoidState = '0';\n\nvoid setup() { \n // we set all 4 control pins to output\n pinMode(rALI, OUTPUT);\n pinMode(rBLI, OUTPUT);\n pinMode(lALI, OUTPUT);\n pinMode(lBLI, OUTPUT); \n // Lets start the serial\n Serial.begin(9600);\n Serial.println(" Welcome To the snobot controls"); \n Serial.println(" Drive Safely!");\n\n Serial1.begin(9600);\n Serial1.println(" Welcome To the snobot controls"); \n Serial1.println(" Drive Safely!");\n help();\n} \nvoid help(){\n Serial.println(" Controls(All lower case):");\n Serial.println(" Stop = q");\n Serial.println(" Forward = w");\n Serial.println(" Backward = s");\n Serial.println(" Left = a");\n Serial.println(" Right = d");\n Serial.println(" Speed-Up = o");\n Serial.println(" Speed-Down = l");\n Serial.println(" Distance = x"); \n Serial.println(" Run_Demo = t"); \n Serial.println(" Help = h");\n\n Serial1.println(" Controls(All CAPS):");\n Serial1.println(" Stop = q");\n Serial1.println(" Forward = w");\n Serial1.println(" Backward = s");\n Serial1.println(" Left = a");\n Serial1.println(" Right = d");\n Serial1.println(" Speed-Up = o");\n Serial1.println(" Speed-Down = l"); \n Serial1.println(" Distance = x"); \n Serial1.println(" Run_Demo = t"); \n Serial1.println(" Help = h");\n}\nvoid Left(int mspeed){\n\n digitalWrite(rBLI, LOW);\n digitalWrite(lALI, LOW);\n analogWrite(rALI, mspeed/2);\n analogWrite(lBLI, mspeed/2);\n delay(turn_delay);\n}\nvoid Right(int mspeed){\n digitalWrite(rALI, LOW);\n digitalWrite(lBLI, LOW);\n analogWrite(rBLI, mspeed/2);\n analogWrite(lALI, mspeed/2);\n}\nvoid Forward(int mspeed){\n digitalWrite(rBLI, LOW);\n digitalWrite(lBLI, LOW);\n analogWrite(rALI, mspeed);\n analogWrite(lALI, mspeed);\n}\nvoid Backward(int mspeed){\n digitalWrite(rALI, LOW);\n digitalWrite(lALI, LOW);\n analogWrite(rBLI, mspeed);\n analogWrite(lBLI, mspeed);\n\n}\nvoid Stop(){\n // by resetting all control pins to low the motors turn off.\n digitalWrite(rALI, LOW);\n digitalWrite(lALI, LOW);\n digitalWrite(rBLI, LOW);\n digitalWrite(lBLI, LOW);\n speedy('S');\n}\nvoid tStop(){\n // by resetting all control pins to low the motors turn off.\n digitalWrite(rALI, LOW);\n digitalWrite(lALI, LOW);\n digitalWrite(rBLI, LOW);\n digitalWrite(lBLI, LOW);\n delay(turn_delay);\n\n}\n\nint serialRead(){\n //if (Serial.available() > 0) {\n switch(Serial.read()){\n\n case 'w': //Forward\n tStop();\n ctrl('B');\n last = 'B';\n Serial.print("Forward: ");\n Serial.println(speedy('R'));\n break;\n case 's': //Backward\n Serial.print("Backward: ");\n Serial.println(speedy('R'));\n tStop();\n\n ctrl('F');\n last = 'F';\n break;\n case 'a': // Left\n Serial.print("Left: ");\n Serial.println(speedy('R'));\n tStop();\n\n ctrl('R');\n last = 'R';\n break; \n case 'd': //Right\n Serial.print("Right: ");\n Serial.println(speedy('R'));\n tStop();\n\n ctrl('L');\n last = 'L';\n break;\n case 'o': // Speed-Up\n ctrl('U');\n Serial.print("Speed_up: ");\n Serial.println(speedy('R'));\n break;\n case 'l': //Speed-Down\n ctrl('D');\n Serial.print("Speed_Down: ");\n Serial.println(speedy('R'));\n break;\n case 't': //Run_Demo\n ctrl('T');\n last = 'T';\n break;\n case 'q': //Stop\n Serial.print("Stop: ");\n Serial.println(speedy('R'));\n ctrl('S');\n last='S';\n break;\n case 'h':\n help();\n break;\n case 'x':\n print_dist();\n break;\n case 'e':\n avoid_toggle('S');\n break;\n default:\n ctrl(last);\n break;\n\n }// End switch\n //} //end if SERIAL READ\n //if (Serial1.available() > 0) {\n switch(Serial1.read()){\n\n case 'w': //Forward\n tStop();\n ctrl('B');\n last = 'B';\n Serial1.print("Forward: ");\n Serial1.println(speedy('R'));\n break;\n case 's': //Backward\n tStop();\n Serial1.print("Backward: ");\n Serial1.println(speedy('R'));\n ctrl('F');\n last = 'F';\n break;\n case 'a': // Left\n tStop();\n Serial1.print("Left: ");\n Serial1.println(speedy('R'));\n ctrl('R');\n last = 'R';\n break; \n case 'd': //Right\n tStop();\n Serial1.print("Right: ");\n Serial1.println(speedy('R'));\n ctrl('L');\n last = 'L';\n break;\n case 'o': // Speed-Up\n ctrl('U');\n Serial1.print("Speed_up: ");\n Serial1.println(speedy('R'));\n break;\n case 'l': //Speed-Down\n ctrl('D');\n Serial1.print("Speed_Down: ");\n Serial1.println(speedy('R'));\n break;\n case 't': //Run_Demo\n ctrl('T');\n last = 'T';\n break;\n case 'q': //Stop\n Serial1.print("Stop: ");\n Serial1.println(speedy('R'));\n ctrl('S');\n last='S';\n break;\n case 'h':\n help();\n break;\n default:\n ctrl(last);\n break;\n\n }// End switch\n //} //end if SERIAL READ\n}//end Serial1Read\nvoid ctrl(unsigned char ctr){\n unsigned char Last = ctr;\n switch(Last){\n\n case 'F':\n\n Forward(speedy('R'));\n Last='F';\n break;\n case 'B':\n\n Backward(speedy('R'));\n Last='B';\n break;\n case 'R':\n\n Left(speedy('R'));\n Last='R';\n break; \n case 'L':\n Right(speedy('R'));\n Last='L';\n break;\n case 'U':\n speedy('U');\n break;\n case 'D':\n speedy('D');\n break;\n case 'T':\n Demo();\n Last='S';\n break;\n case 'S':\n Stop();\n Last = 'S';\n break;\n\n\n }// End switch\n\n}//end Serial1Read\nint speedy(unsigned char sCtl){\n\n switch(sCtl){\n case 'U': \n // if (cspeed >= 250){ cspeed=255;}\n // else { cspeed+=25; }\n cspeed+=cinterval;\n // cspeed = constrain(cspeed, 0, 255);\n\n break;\n case 'D': \n // if (cspeed <= 5){ cspeed=0;}\n // else { cspeed-=25; }\n cspeed-=cinterval;\n\n break;\n case 'S':\n cspeed=0;\n break;\n case 'R':\n cspeed = constrain(cspeed, 0, cmax);\n // cspeed = max(cspeed, 0); \n return cspeed;\n break;\n }\n\n}\nvoid Demo(){\n Backward(sspeed); //go backwards at full speed\n Serial1.print("Backward: ");\n Serial1.println(speedy('R'));\n Serial.print("Backward: ");\n Serial.println(speedy('R'));\n delay (500); \n Forward(sspeed);\n Serial1.print("Forward: ");\n Serial1.println(speedy('R'));\n Serial.print("Forward: ");\n Serial.println(speedy('R'));\n delay (500);\n Left(sspeed);\n Serial1.print("Left: ");\n Serial1.println(speedy('R'));\n Serial.print("Left: ");\n Serial.println(speedy('R'));\n delay (500);\n Right(sspeed);\n Serial1.print("Right: ");\n Serial1.println(speedy('R'));\n Serial.print("Right: ");\n Serial.println(speedy('R'));\n delay (500);\n Stop();\n Serial1.print("Stop: ");\n Serial1.println(speedy('R'));\n Serial.print("Stop: ");\n Serial.println(speedy('R'));\n\n delay (500);\n}//end demo\nvoid Run(){\n\n serialRead();\n}\nvoid speedTest(){\n serialRead();\n Serial1.print("Speed: ");\n Serial1.println(speedy('R'));\n Serial.print("Speed: ");\n Serial.println(speedy('R'));\n\n}\nvoid runTest(){\n Run();\n}\nvoid avoid(){\n if (avoid_toggle('R') =='1'){\n if ( sonar.ping_in() < pingd){\n // Backward(20);\n //Stop();\n//Serial.println("OBJECT AHEAD....AVOIDING!");\n while (sonar.ping_in()<pingd) {\n Right(avoid_speed);\n delay(10);\n }//end while\n Forward(speedy('R'));\n }//if ping< pingd\n }// if avoid_on\n} //end avoid\nint avoid_toggle(int tgl){\n switch (tgl){\n case 'S':\n switch (avoidState){\n case '0':\n avoidState= '1';\n Serial.println("Avoidence on");\n break; \n case '1':\n avoidState='0';\n Serial.println("Avoidence off");\n break; \n } \n break;\n case 'R':\n return avoidState;\n break; \n }\n}\n\nvoid print_dist(){\n Serial.print("Distance: ");\n Serial.print(sonar.ping_in());\n Serial.println(" in.");\n Serial.print("avoidance Distance: ");\n Serial.print(pingd);\n Serial.println(" in.");\n Serial1.print("Distance: ");\n Serial1.print(sonar.ping_in());\n Serial1.println(" in.");\n Serial1.print("avoidance Distance: ");\n Serial1.print(pingd);\n Serial1.println(" in.");\n}\nvoid loop() { \n avoid();\n //speedTest(); //tests speed control\n //Demo(); // show working LEDs\n runTest(); //print's current speed to serial line\n //Run();// Run the program\n}\n\n\n\n\n}}}
ROS Groovy was installed via the repositories. I was unable to work witht he varying instructions and systems that differ between Fuerte and groovy. I have decided to install fuerte by following the instructions on [[this page| http://ros.org/wiki/fuerte/Installation/Debian#fuerte.2BAC8-Installation.2BAC8-rosinstall.rosinstall]]\n\nI will checkinstall the program and provide the deb at a later date\n
http://fritzing.org/\nhttp://firmata.org/wiki/Main_Page
Information about the AC Switch Box\n\nInset Picture Here\n\n[[Hardware|SWBhardware]]\n[[Software|SWBsoftware]]
Type the text for 'New Tiddler'
Type the text for 'New Tiddler'
2 each Power Mobility WCG 22'\n\n|!Reference HTML|! Description|\n|[[Google Search|https://www.google.com/search?q=power+mobility+wcg-22&ie=utf-8&oe=utf-8&client=ubuntu&channel=fs#hl=en&client=ubuntu&channel=fs&sclient=psy-ab&q=buy+batttery+wcg-22&oq=buy+batttery+wcg-22&gs_l=serp.3...320472.328049.0.328402.12.12.0.0.0.2.277.1288.7j4j1.12.0...0.0.UKMOYS3yb_c&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=1a919c97ee3b757c&biw=1030&bih=694]]||\n|[[Battery Company|thttp://www.wholesalebattery.org/power-battery-wcg22-battery-sealed-lead-acid-batteries-power-battery-batteries.html]]||\n|[[Apex Batteries|http://www.apexbattery.com/power-battery-wcg22-battery-sealed-lead-acid-batteries-power-battery-batteries.html]]||\n|[[Powerfactor Inc|http://www.powerfactorinc.com/Batteries/wcg-22.htm]]||\n|[[Wallmart |http://www.walmart.com/search/search-ng.do?search_constraint=976760&ic=48_0&Find.x=0&Find.y=0&Find=Find&_ta=1&search_query=batteries&_tt=batteries]]||\n|[[Wallmart |http://www.walmart.com/ip/Interstate-Battery-12-Volt-12-Amp-Sealed-Lead-Acid-Battery-Set-of-2/15171388http://www.walmart.com/catalog/product.do?product_id=14914031&findingMethod=rr]]||\n|[[Wallmart |http://www.walmart.com/catalog/product.do?product_id=14914031&findingMethod=rr#Item+Description]]||\n
The Snowbot uses the existing battery pack from the original Invacare Chair, as well as the original traction harness.\n\nThere are two 8 cell lead acid batteries in series, so the available voltage is average at 24 Volts\n\nThere is a charger/accessory port available here is the specification:\n\nThe connector type from the batteries is a Cannon XLR 3 pini Female Connector.\nThe pin out is as follows:\n\n|Pin |Signal|\n|1.| Plus 24|\n|2.| Plus 24|\n|3.| Ground|
Type the text for 'New Tiddler'\n\n|!Reference HTML|! Description|\n|[[Baytech |http://www.baytech.net/support/ftp_series.php]]||\n|[[Baytech |http://www.baytech.net/downloads/manuals/RPC-Single-phaseCombinedQSManual.pdf]]||\n|[[Baytech Manual |http://www.baytech.net/downloads/manuals/RPS-Single-phaseCombinedManual.pdf]]||\n|[[Baytech |http://www.baytech.net/downloads/datasheets/rsm_networked_power_control.pdf]]||\n|[[Baytech reference |https://www.google.com/#q=how+to+reconfigure+baytech+network+settings]]||\n|[[Baytech quickstart manual |http://www.baytech.net/downloads/manuals/quickstarts/Combined-RPC-QS-Manual.pdf]]||\n|[[Baytech DS72 manual |http://www.baytech.net/downloads/manuals/DS72-Manual.pdf]]||\n|[[Baytech reset procedure |http://www.baytech.net/downloads/support_docs/Reset_Procedure_Horizontal_RPC-DE-Series.pdf]]||\n
\n\n* [[The controller we need|http://www.ebay.com/itm/INVACARE-CONTROLLER-WHEELCHAIR-1036760/221076138097?ssPageName=WDVW&rd=1&ih=012&category=19265&cmd=ViewItem]] INVACARE CONTROLLER WHEELCHAIR 1036760\n* [[The controller we got|http://www.ebay.com/itm/INVACARE-CONTROLLER-WHEELCHAIR-1086903/221076141211?ssPageName=WDVW&rd=1&ih=012&category=19265&cmd=ViewItem]] INVACARE CONTROLLER WHEELCHAIR 1086903