Skip to content

Commit

Permalink
Sonar optimization & code optimization
Browse files Browse the repository at this point in the history
- Optimized sonar function for increased accuracy

- Code optimization for global pin assignments
  • Loading branch information
jxns committed Jan 5, 2023
1 parent 7467a3b commit cc94019
Showing 1 changed file with 15 additions and 12 deletions.
27 changes: 15 additions & 12 deletions joycar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,13 @@ enum SensorLRSelection {

//% color="#275c6b" icon="\uf1b9" weight=95
namespace JoyCar {
const ultrasonicEchoPin = DigitalPin.P12;
const ultrasonicTriggerPin = DigitalPin.P8;
const buzzerPin = AnalogPin.P16;
const servoOnePin = AnalogPin.P1;
const servoTwoPin = AnalogPin.P13;
const adcPin = AnalogPin.P2;

// Light Variables
let strip = neopixel.create(DigitalPin.P0, 8, NeoPixelMode.RGB);

Expand Down Expand Up @@ -226,10 +233,10 @@ namespace JoyCar {
//% angle.min=0 angle.max=180 angle.defl=90
export function servo(servo: number, angle: number) {
if (servo == 1) {
pins.servoWritePin(AnalogPin.P1, angle);
pins.servoWritePin(servoOnePin, angle);
}
else {
pins.servoWritePin(AnalogPin.P13, angle);
pins.servoWritePin(servoTwoPin, angle);
}
}

Expand Down Expand Up @@ -362,16 +369,12 @@ namespace JoyCar {
//% subcategory=Sensors
//% weight=100
export function sonar() {
let echo = DigitalPin.P12;
let trigger = DigitalPin.P8;
let duration = 0;
pins.digitalWritePin(trigger, 0);
control.waitMicros(2);
pins.digitalWritePin(trigger, 1);
pins.digitalWritePin(ultrasonicTriggerPin, 0);
control.waitMicros(10);
pins.digitalWritePin(trigger, 0);
duration = pins.pulseIn(echo, PulseValue.High);
return (duration * ((0.034 / 2) * (30 / 18)));
pins.digitalWritePin(ultrasonicTriggerPin, 1);
duration = pins.pulseIn(ultrasonicEchoPin, PulseValue.High);
return (duration / 58.2);
}

/**
Expand Down Expand Up @@ -428,7 +431,7 @@ namespace JoyCar {
//% subcategory="Additional Functions"
//% weight=100
export function buzzer(melody: Melodies, options: MelodyOptions): void {
pins.analogSetPitchPin(AnalogPin.P16);
pins.analogSetPitchPin(buzzerPin);
music.beginMelody(music.builtInMelody(melody), options);
}

Expand All @@ -442,7 +445,7 @@ namespace JoyCar {
let uref = 0.00322265625;
let uratio = 2.7857142;

let adcvoltage = pins.analogReadPin(AnalogPin.P2);
let adcvoltage = pins.analogReadPin(adcPin);
return (uref * adcvoltage * uratio);
}

Expand Down

0 comments on commit cc94019

Please sign in to comment.