Bill Examples
M&MStudioBV
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
//plucks - four bumps
|
||||
//three notes (400,500,600hz)
|
||||
//can't get Music.setGain1, etc to work only Music.setGain() starts all of them.
|
||||
//requires FSR attached to A
|
||||
|
||||
#define NUM_OSCILLATORS 3
|
||||
#define BIT_DEPTH 8
|
||||
|
||||
#include <Music.h>
|
||||
#include <Motor.h>
|
||||
|
||||
int x, xold, xt; // input position x, output force F
|
||||
float K = 20; // slope constant
|
||||
byte count; //for print count-down
|
||||
float fin; // scaled to be 0.0 - 1.0
|
||||
float fout; // from FSR
|
||||
|
||||
void setup(){
|
||||
Music.init();
|
||||
Music.setFrequency1(200);
|
||||
Music.setFrequency2(250);
|
||||
Music.setFrequency3(300);
|
||||
|
||||
//FSR-A
|
||||
pinMode(A1,INPUT);
|
||||
digitalWrite(A1,HIGH); //set pull-up
|
||||
pinMode(4,OUTPUT);
|
||||
digitalWrite(4,LOW);
|
||||
//FSR-B
|
||||
pinMode(A4,INPUT);
|
||||
digitalWrite(A4,HIGH); //set pull-up
|
||||
pinMode(5,OUTPUT);
|
||||
digitalWrite(5,LOW);
|
||||
|
||||
Serial.begin(9600);
|
||||
|
||||
MotorA.init();
|
||||
|
||||
Serial.begin(9600);
|
||||
x = analogRead(A0); // initialize x
|
||||
}
|
||||
|
||||
void loop(){
|
||||
xold = x;
|
||||
x = analogRead(A0);
|
||||
|
||||
// did xold - x include 125, 375, 625, 875? or x%250 = 125
|
||||
|
||||
if (((xold <= 125) && (x > 125)) || ((xold >= 125) && (x < 125))){
|
||||
Music.setGain1(fin*fin);
|
||||
Music.setFrequency1(200);
|
||||
}
|
||||
if (((xold <= 375) && (x > 375)) || ((xold >= 375) && (x < 375))){
|
||||
Music.setGain2(fin*fin);
|
||||
//Music.setFrequency(250);
|
||||
}
|
||||
if (((xold <= 625) && (x > 625)) || ((xold >= 625) && (x < 625))){
|
||||
Music.setGain3(fin*fin);
|
||||
//Music.setFrequency(300);
|
||||
}
|
||||
if (((xold <= 875) && (x > 875)) || ((xold >= 875) && (x < 875))){
|
||||
Music.setGain1(fin*fin);
|
||||
Music.setFrequency1(400);
|
||||
}
|
||||
else{
|
||||
Music.setGain1(0.995f*Music.getGain1());
|
||||
Music.setGain2(0.995f*Music.getGain2());
|
||||
Music.setGain3(0.995f*Music.getGain3());
|
||||
}
|
||||
fin = 1000 - analogRead(A1); // invert and shift
|
||||
fin = max (0, fin); // make sure it's > 0
|
||||
fin = min (1023, fin); // and < 1023
|
||||
fin = fin/1000; // scale 0-1.0
|
||||
fin = fin*fin; //square it for more effect near 1.0.
|
||||
xt = x % 250; //same force for each 250 ranage
|
||||
fout = 0;
|
||||
if (xt > 60) fout = - K * (xt - 60);
|
||||
if (xt > 80) fout = - K * (100 - xt);
|
||||
if (xt > 120) fout = K * (140 - xt);
|
||||
if (xt > 140) fout = 0;
|
||||
fout = fout * fin;
|
||||
MotorA.torque(fout);
|
||||
|
||||
|
||||
// print every 256 cycles
|
||||
if(count++==0){
|
||||
Serial.print(x);
|
||||
Serial.print(" ");
|
||||
Serial.print(xt);
|
||||
Serial.print(" ");
|
||||
Serial.print(fin);
|
||||
Serial.print(" ");
|
||||
Serial.println(fout);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// FSR A and B
|
||||
// stick-slip
|
||||
|
||||
#include <Motor.h>
|
||||
int xA, finA, foutA; //fout gets too big if fout=fin*x;
|
||||
float x, fin, fout;
|
||||
byte c;
|
||||
|
||||
void setup(){
|
||||
//FSR-A
|
||||
pinMode(A1,INPUT);
|
||||
digitalWrite(A1,HIGH); //set pull-up
|
||||
pinMode(4,OUTPUT);
|
||||
digitalWrite(4,LOW);
|
||||
//FSR-B
|
||||
pinMode(A4,INPUT);
|
||||
digitalWrite(A4,HIGH); //set pull-up
|
||||
pinMode(5,OUTPUT);
|
||||
digitalWrite(5,LOW);
|
||||
|
||||
//Motors
|
||||
MotorA.init();
|
||||
MotorB.init();
|
||||
|
||||
Serial.begin(9600);
|
||||
}
|
||||
void loop(){
|
||||
x = 512 - analogRead(A0); //in:[0,1023] out: [-512,511]
|
||||
fin = 1024 - analogRead(A1); //in:[1023,0] out [0,1023]
|
||||
fout = x*fin/500;
|
||||
MotorA.torque(fout);
|
||||
|
||||
x = 512 - analogRead(A3); //in:[0,1023] out: [-512,511]
|
||||
fin = 1024 - analogRead(A4); //in:[1023,0] out [0,1023]
|
||||
fout = x*fin/500;
|
||||
MotorB.torque(fout);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// FSR A and B test
|
||||
void setup(){
|
||||
//FSR-A
|
||||
pinMode(A1,INPUT);
|
||||
digitalWrite(A1,HIGH); //set pull-up
|
||||
pinMode(4,OUTPUT);
|
||||
digitalWrite(4,LOW);
|
||||
//FSR-B
|
||||
pinMode(A4,INPUT);
|
||||
digitalWrite(A4,HIGH); //set pull-up
|
||||
pinMode(5,OUTPUT);
|
||||
digitalWrite(5,LOW);
|
||||
|
||||
Serial.begin(9600);
|
||||
}
|
||||
void loop(){
|
||||
Serial.print(analogRead(A1));
|
||||
Serial.print(" ");
|
||||
Serial.println(analogRead(A4));
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
void setup(){
|
||||
pinMode(A1,INPUT);
|
||||
pinMode(4,OUTPUT);
|
||||
digitalWrite(4,LOW); //sets ground
|
||||
digitalWrite(A1,HIGH); //sets pull-up
|
||||
}
|
||||
void loop(){
|
||||
digitalWrite(A1,LOW);
|
||||
digitalWrite(4,HIGH);
|
||||
delay(1000);
|
||||
digitalWrite(A1,HIGH);
|
||||
digitalWrite(4,LOW);
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
//does D4 actually go 5v to GND?
|
||||
//yes, if D4 is OUTPUT.
|
||||
@@ -0,0 +1,36 @@
|
||||
//HumpFSR-A
|
||||
//same as CenterFSR-A with sign reversal
|
||||
//position on A0, pwm:D9, dir:D8,D7
|
||||
//FSR on A1 and D4
|
||||
|
||||
// BUZZ! (float vs int?)
|
||||
#include "Motor.h"
|
||||
|
||||
int x, duty, fin;
|
||||
float fout;
|
||||
byte count; // used as counter
|
||||
|
||||
void setup(){
|
||||
Serial.begin(9600);
|
||||
MotorA.init();
|
||||
//for FSR
|
||||
pinMode(A1,INPUT);
|
||||
digitalWrite(A1,HIGH);
|
||||
pinMode(4,OUTPUT);
|
||||
digitalWrite(4,LOW);
|
||||
}
|
||||
|
||||
void loop(){
|
||||
fin = 1024 - analogRead(A1);
|
||||
x = analogRead(A0)-512;
|
||||
fout = .004*(float(fin)*float(x));
|
||||
duty = min(1023,fout);
|
||||
MotorA.torque(fout);
|
||||
if(count++ == 0){
|
||||
Serial.print(x,DEC);
|
||||
Serial.print(" ");
|
||||
Serial.print(fin,DEC);
|
||||
Serial.print(" ");
|
||||
Serial.println(fout,DEC);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#include "Motor.h"
|
||||
|
||||
int x; //position
|
||||
float fin; //from hall-sensor [ wired GND to A1 ]
|
||||
float fout; //force
|
||||
int duty; // max 1024
|
||||
byte c; // counter to send data every 256 cycles
|
||||
|
||||
void setup(){
|
||||
MotorA.init();
|
||||
pinMode(A1,INPUT); //used for FSR [A1 to D4]
|
||||
pinMode(4,OUTPUT); //used for FSR as GND
|
||||
digitalWrite(A1,HIGH); //enable pull-up resistor
|
||||
digitalWrite(4,LOW); //GND for FSR
|
||||
//TimerOne
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
void loop(){
|
||||
fin = analogRead(A1) - 1000;
|
||||
//fout = random(fin);
|
||||
fout = 2*fin + random(fin); // range [0,4096];
|
||||
fout = fout/3;
|
||||
MotorA.torque(fout);
|
||||
// Timer1.pwm(9,duty); //output force
|
||||
|
||||
if(c++==0){
|
||||
Serial.print(fin);
|
||||
Serial.print(" ");
|
||||
Serial.println(fout);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user