#PyBoard
# screen /dev/tty.usbmodem*
# Servo Example
# http://docs.micropython.org/en/latest/pyboard/tutorial/servo.html
import pyb
s1 = pyb.Servo(1) # pin X1
s1.angle(45)
s1.angle(60, 2000) # take 2 seconds
s1.speed(30)
// Arduino
//ir remote
#include <IRremote.h>
int enA = 2; // right
int enB = 5; //left
int pinA1 = 8;
int pinA2 = 9;
int pinB1 = 10;
int pinB2 = 11;
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(pinA1, OUTPUT);
pinMode(pinA2, OUTPUT);
pinMode(pinB1, OUTPUT);
pinMode(pinB2, OUTPUT);
digitalWrite(enA, HIGH);
digitalWrite(enB, HIGH);
}
void loop() {
if (irrecv.decode(&results)) {
//Serial.println(results.value, HEX);
handle_codes();
irrecv.resume(); // Receive the next value
}
delay(10);
}
void rightForward()
{
digitalWrite(pinA1, LOW);
digitalWrite(pinA2, HIGH);
delay(1);
}
void rightBackward()
{
digitalWrite(pinA1, HIGH);
digitalWrite(pinA2, LOW);
delay(1);
}
void leftForward()
{
digitalWrite(pinB1, HIGH);
digitalWrite(pinB2, LOW);
delay(1);
}
void leftBackward()
{
digitalWrite(pinB1, LOW);
digitalWrite(pinB2, HIGH);
delay(1);
}
void leftBrake()
{
digitalWrite(pinB1, HIGH);
digitalWrite(pinB2, HIGH);
delay(1);
}
void rightBrake()
{
digitalWrite(pinA1, HIGH);
digitalWrite(pinA2, HIGH);
delay(1);
}
void handle_codes()
{
switch(results.value)
{
case 0x1E108:
Serial.println("up");
rightForward();
leftForward();
break;
case 0x9E108:
Serial.println("down");
leftBackward();
rightBackward();
break;
case 0x5E108:
Serial.println("left");
leftBackward();
rightForward();
break;
case 0xDE108:
Serial.println("right");
rightBackward();
leftForward();
break;
case 0x3E108:
Serial.println("center");
leftBrake();
rightBrake();
break;
default:
Serial.println(results.value, HEX);
}
delay(10);
}
// xbox receiver
//http://www.instructables.com/id/Xbox-360-Wireless-Arduino/?ALLSTEPS
/*
Example sketch for the Xbox Wireless Reciver library - developed by Kristian Lauszus
It supports up to four controllers wirelessly
For more information see the blog post: http://blog.tkjelectronics.dk/2012/12/xbox-360-receiver-added-to-the-usb-host-library/ or
send me an e-mail: [email protected]
*/
#include <XBOXRECV.h>
// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#include <SPI.h>
#endif
int enA = 2;
int enB = 3;
int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
USB Usb;
XBOXRECV Xbox(&Usb);
void setup() {
Serial.begin(115200) ;
Usb.Init() ;
Serial.println( "Begin speed log." ) ;
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
analogWrite(enA, 175);
analogWrite(enB, 175);
}
void rightFront()
{
// put your main code here, to run repeatedly:
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
}
void rightBack()
{
// put your main code here, to run repeatedly:
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
}
void leftFront()
{
// put your main code here, to run repeatedly:
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void leftBack()
{
// put your main code here, to run repeatedly:
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
/*
void center()
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
*/
void loop() {
Usb.Task();
if(Xbox.XboxReceiverConnected)
{
for(uint8_t i=0;i<4;i++)
{
if(Xbox.getAnalogHat(LeftHatX, i) > 7500 || Xbox.getAnalogHat(LeftHatX, i) < -7500 || Xbox.getAnalogHat(LeftHatY, i) > 7500 || Xbox.getAnalogHat(LeftHatY, i) < -7500 || Xbox.getAnalogHat(RightHatX, i) > 7500 || Xbox.getAnalogHat(RightHatX, i) < -7500 || Xbox.getAnalogHat(RightHatY, i) > 7500 || Xbox.getAnalogHat(RightHatY, i) < -7500)
{
if(Xbox.getAnalogHat(LeftHatX, i) > 7500)
{
Serial.print(F("LeftHatX: "));
Serial.print(Xbox.getAnalogHat(LeftHatX, i));
Serial.print("\t");
if (Xbox.getAnalogHat(LeftHatX, i) > 26000)
turn_right();
else
center();
}
if (Xbox.getAnalogHat(LeftHatX, i) < -7500)
{
Serial.print(F("LeftHatX: "));
Serial.print(Xbox.getAnalogHat(LeftHatX, i));
Serial.print("\t");
if (Xbox.getAnalogHat(LeftHatX, i) < -26000)
turn_left();
else
center();
}
if(Xbox.getAnalogHat(LeftHatY, i) > 7500 || Xbox.getAnalogHat(LeftHatY, i) < -7500)
{
Serial.print(F("LeftHatY: "));
Serial.print(Xbox.getAnalogHat(LeftHatY, i));
Serial.print("\t");
}
if(Xbox.getAnalogHat(RightHatX, i) > 7500)
{
Serial.print(F("RightHatX: "));
Serial.print(Xbox.getAnalogHat(RightHatX, i));
Serial.print("\t");
}
if (Xbox.getAnalogHat(RightHatX, i) < -7500)
{
Serial.print(F("RightHatX: "));
Serial.print(Xbox.getAnalogHat(RightHatX, i));
Serial.print("\t");
}
if(Xbox.getAnalogHat(RightHatY, i) > 7500 || Xbox.getAnalogHat(RightHatY, i) < -7500) {
Serial.print(F("RightHatY: "));
Serial.print(Xbox.getAnalogHat(RightHatY, i));
}
Serial.println();
}
if(Xbox.getButtonClick(UP, i))
{
Serial.println(F("Up"));
}
if(Xbox.getButtonClick(DOWN, i))
{
Serial.println(F("Down"));
}
if(Xbox.getButtonClick(LEFT, i))
{
Serial.println(F("Left"));
}
if(Xbox.getButtonClick(RIGHT, i))
{
Serial.println(F("Right"));
}
if(Xbox.getButtonClick(START, i))
{
Serial.println(F("Start"));
}
if(Xbox.getButtonClick(BACK, i))
{
Serial.println(F("Back"));
}
if(Xbox.getButtonClick(L3, i))
Serial.println(F("L3"));
if(Xbox.getButtonClick(R3, i))
Serial.println(F("R3"));
if(Xbox.getButtonClick(L1, i))
Serial.println(F("L1"));
if(Xbox.getButtonClick(R1, i))
Serial.println(F("R1"));
if(Xbox.getButtonClick(XBOX, i))
{
Xbox.setLedMode(ROTATING, i);
Serial.println(F("Xbox"));
}
if(Xbox.getButtonClick(A, i))
{
Serial.println(F("A"));
}
if(Xbox.getButtonClick(X, i))
Serial.println(F("X"));
if(Xbox.getButtonClick(Y, i))
{
Serial.println(F("Y"));
motors_stop();
}
}
}
delay(1);
}
void turn_left()
{
leftBack(); // set leg 1 of the H-bridge low
rightFront();
}
void turn_right()
{
rightBack(); // set leg 1 of the H-bridge low
leftFront();
}
void motors_stop()
{
analogWrite(enB,0);
analogWrite(enA,0);
}
void center()
{
leftFront();
rightFront();
}
L298N
int enA = 2;
int enB = 3;
int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
void setup() {
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void rightFront()
{
// put your main code here, to run repeatedly:
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 175);
}
void rightBack()
{
// put your main code here, to run repeatedly:
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 175);
}
void leftFront()
{
// put your main code here, to run repeatedly:
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 175);
}
void leftBack()
{
// put your main code here, to run repeatedly:
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 175);
}
void demoOne()
{
//rightFront();
rightBack();
}
void demoTwo()
{
rightBack();
leftBack();
}
void loop() {
demoOne();
delay(1000);
//demoTwo();
}
//Arduino PWM Speed Control:
int enable_A = 7;
int motoA_right = 6;
int motoB_left = 5;
void setup()
{
pinMode(enable_A, OUTPUT);
}
void loop()
{
digitalWrite(enable_A, LOW);
//analogWrite(motoB_left, 100);
}
void forward()
{
analogWrite(motoA_right, 0);
analogWrite(motoB_left, 0);
}
microUSB, USB, USB B
2.1mmx5mm DC connector or 2.1mm DC connector
JST-PH connector
power header
buck converter aka voltage step down converter (lowers voltage)
boost converter (increases voltage)
**buck converter** vs **voltage regulator** (aka linear voltage regulator) -
voltage regulator is less efficient converting ecess power to heat and can overheat thereby stopping the flow of electricity
the buck converter is more expensive but more efficient
perf board
bread board
IC - intergrated circuit
op amp - ?
inductor - steadies current
capacitor - steadies voltage
ESC - electronic speed control - for hobby like race cars and quadropters
BEC - battery eliminator circuit - steps down voltage from batteries (ususally LiPo) down to 5V or whatever
60/40 solder with rosin core - 60% tin, 40% lead?
24 AWG (gauge) solid core wire
28 AWG braided wire (7 @ 36 or 7/36 or 7 braids at 36 gauge)
Arduino UNO - 7-12v recommended. but can run 5v from battery but that is unstable. via USB B or 2.1mm.
reference: https://www.arduino.cc/en/Main/ArduinoBoardUno
Raspberry Pi 2 B - 5V only microUSB
reference: https://www.raspberrypi.org/help/faqs/#powerReqs
C-rating (discarge rating) - "how big the hose is". how much current can be outputted at a given time
calculating current discharged = N * C -> e.g. 20C -> 20 * 2000mAh = 20 * 2 = 40Amps
burst rating - peak ampere output over short amount of time e.g. 30C -> 30 * 5 = 150A over 10 seconds
Capacity (mAh) - "how much water the bucket holds"
e.g. 1300mAh - it will discharge 1300mA over an hour then the battery will be drained
Voltage - "water pressure"
Cell count - e.g. 2S is 2 cells
stretch tool
deform tool
collaborate? -> mirroring
extrusion
fill about rotation
hole wizar
relationships
formulas/constants
planes
chamfer
rounder
drawing parts
1 to 1 drawing