Gunnerkrigg Court, python style
My newest toy, EAGLE, is making circuit diagrams and PBC design a breeze. Since I'm cheap and therefore using the "light" version, it has a few limitations (two sided, 3.2"x4"). Other than those, which I don't anticipate going over anytime soon. It's a lot of fun, but there is a rather steep learning curve associated with it. I've spent about an hour and a half on this guy (a 1.8V to 12V booster), getting the schematic laid up and then wiring it (since the auto-router function doesn't work in the free version).
/* Test program for tach lighting system * By Mike McD * Created on 5/8/2010. Last Updated on 5/8/10. * digitalredline.posterous.com */ int LEDs[] = {0,22,23,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; //Array of all LED pins int RPMs[] = {0,500,1000,1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,7500,8000}; //Array of all RPM values int RPMinput = 0; //Input for the pot int RPMvalue; //RPM value variable int RPM; //"True" rpm int n; //Index variable int remainder; //Remainder variable int PWMvalue; //PWM value variable void setup() { Serial.begin(9600); pinMode(LEDs[1],OUTPUT); pinMode(LEDs[2],OUTPUT); pinMode(LEDs[3],OUTPUT); pinMode(LEDs[4],OUTPUT); pinMode(LEDs[5],OUTPUT); pinMode(LEDs[6],OUTPUT); pinMode(LEDs[7],OUTPUT); pinMode(LEDs[8],OUTPUT); pinMode(LEDs[9],OUTPUT); pinMode(LEDs[10],OUTPUT); pinMode(LEDs[11],OUTPUT); pinMode(LEDs[12],OUTPUT); pinMode(LEDs[13],OUTPUT); pinMode(LEDs[14],OUTPUT); pinMode(LEDs[15],OUTPUT); pinMode(LEDs[16],OUTPUT); pinMode(RPMinput,INPUT); } void loop() { RPMvalue=analogRead(RPMinput); //Bring RPM value in RPMvalue=constrain(RPMvalue,0,1000); //Constrain RPM values between 0 and 1000 RPM=RPMvalue*8; //Get the 'true' RPM value n=RPM/500; //Get the value of the index remainder=RPM-n*500; //Get the remainder of the RPM for the PWM LED remainder=constrain(remainder,0,250); //Constrain the remainder value between 0 and 250 PWMvalue=remainder/2; //Floored PWM value for the highest LED Serial.print(n); switch (n) { case 0: digitalWrite(LEDs[1],LOW); digitalWrite(LEDs[2],LOW); digitalWrite(LEDs[3],LOW); digitalWrite(LEDs[4],LOW); digitalWrite(LEDs[5],LOW); digitalWrite(LEDs[6],LOW); digitalWrite(LEDs[7],LOW); digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); break; case 1: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],LOW); digitalWrite(LEDs[3],LOW); digitalWrite(LEDs[4],LOW); digitalWrite(LEDs[5],LOW); digitalWrite(LEDs[6],LOW); digitalWrite(LEDs[7],LOW); digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); break; case 2: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); //digitalWrite(LEDs[3],LOW); digitalWrite(LEDs[4],LOW); digitalWrite(LEDs[5],LOW); digitalWrite(LEDs[6],LOW); digitalWrite(LEDs[7],LOW); digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[3],PWMvalue); break; case 3: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); //digitalWrite(LEDs[4],LOW); digitalWrite(LEDs[5],LOW); digitalWrite(LEDs[6],LOW); digitalWrite(LEDs[7],LOW); digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[4],PWMvalue); break; case 4: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); //digitalWrite(LEDs[5],LOW); digitalWrite(LEDs[6],LOW); digitalWrite(LEDs[7],LOW); digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[5],PWMvalue); break; case 5: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); //digitalWrite(LEDs[6],LOW); digitalWrite(LEDs[7],LOW); digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[6],PWMvalue); break; case 6: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); //digitalWrite(LEDs[7],LOW); digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[7],PWMvalue); break; case 7: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); //digitalWrite(LEDs[8],LOW); digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[8],PWMvalue); break; case 8: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); //digitalWrite(LEDs[9],LOW); digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[9],PWMvalue); break; case 9: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); digitalWrite(LEDs[9],HIGH); //digitalWrite(LEDs[10],LOW); digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[10],PWMvalue); break; case 10: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); digitalWrite(LEDs[9],HIGH); digitalWrite(LEDs[10],HIGH); //digitalWrite(LEDs[11],LOW); digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[11],PWMvalue); break; case 11: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); digitalWrite(LEDs[9],HIGH); digitalWrite(LEDs[10],HIGH); digitalWrite(LEDs[11],HIGH); //digitalWrite(LEDs[12],LOW); digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[12],PWMvalue); break; case 12: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); digitalWrite(LEDs[9],HIGH); digitalWrite(LEDs[10],HIGH); digitalWrite(LEDs[11],HIGH); digitalWrite(LEDs[12],HIGH); //digitalWrite(LEDs[13],LOW); digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[13],PWMvalue); break; case 13: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); digitalWrite(LEDs[9],HIGH); digitalWrite(LEDs[10],HIGH); digitalWrite(LEDs[11],HIGH); digitalWrite(LEDs[12],HIGH); digitalWrite(LEDs[13],HIGH); //digitalWrite(LEDs[14],LOW); digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[14],PWMvalue); break; case 14: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); digitalWrite(LEDs[9],HIGH); digitalWrite(LEDs[10],HIGH); digitalWrite(LEDs[11],HIGH); digitalWrite(LEDs[12],HIGH); digitalWrite(LEDs[13],HIGH); digitalWrite(LEDs[14],HIGH); //digitalWrite(LEDs[15],LOW); digitalWrite(LEDs[16],LOW); analogWrite(LEDs[15],PWMvalue); break; case 15: digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrite(LEDs[5],HIGH); digitalWrite(LEDs[6],HIGH); digitalWrite(LEDs[7],HIGH); digitalWrite(LEDs[8],HIGH); digitalWrite(LEDs[9],HIGH); digitalWrite(LEDs[10],HIGH); digitalWrite(LEDs[11],HIGH); digitalWrite(LEDs[12],HIGH); digitalWrite(LEDs[13],HIGH); digitalWrite(LEDs[14],HIGH); digitalWrite(LEDs[15],HIGH); //digitalWrite(LEDs[16],LOW); analogWrite(LEDs[16],PWMvalue); break; case 16: for (int brightness = 0; brightness < 255; brightness++) { analogWrite(LEDs[1],brightness); analogWrite(LEDs[2],brightness); analogWrite(LEDs[3],brightness); analogWrite(LEDs[4],brightness); analogWrite(LEDs[5],brightness); analogWrite(LEDs[6],brightness); analogWrite(LEDs[7],brightness); analogWrite(LEDs[8],brightness); analogWrite(LEDs[9],brightness); analogWrite(LEDs[10],brightness); analogWrite(LEDs[11],brightness); analogWrite(LEDs[12],brightness); analogWrite(LEDs[13],brightness); analogWrite(LEDs[14],brightness); analogWrite(LEDs[15],brightness); analogWrite(LEDs[16],brightness); delay(3); } for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(LEDs[1],brightness); analogWrite(LEDs[2],brightness); analogWrite(LEDs[3],brightness); analogWrite(LEDs[4],brightness); analogWrite(LEDs[5],brightness); analogWrite(LEDs[6],brightness); analogWrite(LEDs[7],brightness); analogWrite(LEDs[8],brightness); analogWrite(LEDs[9],brightness); analogWrite(LEDs[10],brightness); analogWrite(LEDs[11],brightness); analogWrite(LEDs[12],brightness); analogWrite(LEDs[13],brightness); analogWrite(LEDs[14],brightness); analogWrite(LEDs[15],brightness); analogWrite(LEDs[16],brightness); delay(3); break; } } } /* digitalWrite(LEDs[1],HIGH); digitalWrite(LEDs[2],HIGH); digitalWrite(LEDs[3],HIGH); digitalWrite(LEDs[4],HIGH); digitalWrit
Oh python...
Here is a little chunk of code I just copied and changed for my Arduino Mega board
that I bought and finally had time to start playing with.
This is literally EXACTLY what i've been wanting.
Easy PWM control makes flashing lights super easy,
so this should (in theory) make the digital tach even cooler.
Assuming I can find the right wire to tap to get the tach signal.
Anyways, this code makes an LED pulse on and off (as per those warning lights that always appear in moves).
Not on/off, but it gently pulses, warning you of impending danger.
I think I want one of these to warn me of my danger!
/* Pulsing LED, as per a warning light! * By Mike McD * Created on 4/30/10, Last Updated 4/30/10 */ const int ledPin = 10; void setup() { pinMode(ledPin, OUTPUT);} void loop() { // fade the LED on ledPin from off to brightest: for (int brightness = 0; brightness < 255; brightness++){ analogWrite(ledPin, brightness); delay(1); } // fade the LED on ledPin from brithstest to off: for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(ledPin, brightness); delay(1); } }P.S. I just found out that the Arduino Sketchpad has HTML copy/paste ability. Finally my code gets posted in the correct format. I wonder if IDLE or VIDLE has this capability? P.P.S Doesn't seem like it...at least not VIDLE? Maybe some other IDE?
P.S. for those of you using macs, I used snapzprox (http://www.ambrosiasw.com/utilities/snapzprox/) to take my videos. They have like a 30 day free trial, and it does exactly what you need. Quicktime 10 (OS 10.6 and later I believe) also has a screen record feature, but since my graphics car doesn't support pixel shader 3.0 (which is necessary for the planet skins) I was unable to utilize said features.
from __future__ import division
from visual import *
from visual.graph import *
Here is the code for my physical pendulum.
from __future__ import division # makes sure is decimal and not integerHere is the cosine graph of the function!
Fun facts about the pendulum: The center of mass is located 0.675 meters from the tip of the yard stick, or just above where the cross is, and a moment of inertia of 0.307 kg*m^2. Both of these factors lead to a period of 2.158 seconds.
from __future__ import division
from visual import *
from visual.graph import *
YES! I finally got orbit on the flight home from ORD. I think the guy next to me though I was crazy because I was shoving my laptop across the aisle at my mom's face to show her a little blue orb that didn't appear to be doing anything. I would post the code, but its over 500 lines (512 to be exact). The secret came in the fact that I am using the X and Y axes, rather than the X and Z axes. For those of you who remember the unit circle (shown below)