/// <summary> /// Sets the speed at which the DC Motor rotates. /// </summary> /// <param name="speed">A value between -1 and 1.</param> public static void SetSpeed(double speed) { if ((speed > 1 | speed < -1)) { throw new ArgumentOutOfRangeException("speed", "speed must be between -1 and 1."); } if ((speed == 1.0)) { speed = 0.99; } if ((speed == -1.0)) { speed = -0.99; } if ((_started)) { _pwm.Stop(); } _pwm.DutyCycle = speed; _pwm.Start(); _started = true; }
/// <summary> /// Play a frequency for a specified duration /// </summary> /// <param name="frequency">The frequency in hertz of the tone to be played</param> /// <param name="duration">How long the note is played in milliseconds, if durration is 0, tone plays indefinitely</param> public void PlayTone(float frequency, int duration = 0) { if (frequency <= 0) { throw new System.Exception("frequency must be greater than 0"); } if (!_isPlaying) { _isPlaying = true; var period = (uint)(1000000 / frequency); _pwm.Period = period; _pwm.Duration = period / 2; _pwm.Start(); if (duration > 0) { Thread.Sleep(duration); _pwm.Stop(); } _isPlaying = false; } }
public static void Main() { AnalogInput capt = new AnalogInput((Cpu.AnalogChannel)Cpu.AnalogChannel.ANALOG_0); OutputPort dir = new OutputPort(FEZSpider.Socket8.Pin9, true); InputPort microswitch = new InputPort(FEZSpider.Socket4.Pin3, false, Port.ResistorMode.PullDown); double frequence = 38000; // Période en microseconde double rapportCyclique = 0.5; // Période en microseconde PWM motorDriver = new PWM(FEZSpider.Socket8.Pwm7, frequence, rapportCyclique, false); motorDriver.Stop(); while (true) { if (microswitch.Read()) { motorDriver.Stop(); } Debug.Print("Distance : " + capt.Read().ToString()); Debug.Print(microswitch.Read().ToString()); Thread.Sleep(50); } }
/// <summary> /// Sets the frequency and duty cycle of the <see cref="PWMOutput"/> interface and starts the PWM signal. /// </summary> /// <param name="frequency">Required frequency in Hertz.</param> /// <param name="dutyCycle">Duty cycle from 0-1.</param> public void Set(int frequency, double dutyCycle) { if (frequency < 0) { throw new ArgumentException("frequency"); } if (dutyCycle < 0 || dutyCycle > 1) { throw new ArgumentException("dutyCycle"); } if (pwm == null) { pwm = new PWM(pwmChannel, frequency, dutyCycle, invert); pwm.Start(); started = true; } else { if (started) { pwm.Stop(); } pwm.Frequency = frequency; pwm.DutyCycle = dutyCycle; pwm.Start(); started = true; } }
private void SetTone(Tone tone) { _buzzPwm.Stop(); if (Math.Abs(tone.Freq) < Double.Epsilon) { return; } _buzzPwm.Frequency = ((int)tone.Freq); _buzzPwm.DutyCycle = 0.5; _buzzPwm.Start(); }
public void Play(int freq_Hz, int duration_mSec) { myPWM.Stop(); if (freq_Hz != 0) { myPWM.Frequency = freq_Hz; myPWM.Start(); } Thread.Sleep(duration_mSec); myPWM.Stop(); Thread.Sleep(tempo / 2); }
public void go_clockwise_one_tick() { servo.Duration = (uint)1300; servo.Start(); Thread.Sleep(20); servo.Stop(); Thread.Sleep(200); _rightTicksTaken++; // Debug.Print("Right ticks taken " + _rightTicksTaken); // Debug.Print("Total Tick count: " + get_ticks()); }
void allarm_Tick(GT.Timer timer) { if (!StopAllarm) { buzzer.Frequency = 500; Thread.Sleep(200); buzzer.Frequency = 1000; Thread.Sleep(200); } if (StopAllarm) { buzzer.Stop(); } }
public static void Rick() { PWM myPWM = new PWM(FEZSpiderII.Socket11.Pwm9, frequence, 0.5, false); myPWM.Start(); myPWM.Frequency = Fa; Thread.Sleep(750); myPWM.Frequency = Sol; Thread.Sleep(750); myPWM.Frequency = Do; Thread.Sleep(500); myPWM.Frequency = Sol; Thread.Sleep(750); myPWM.Frequency = La; Thread.Sleep(750); myPWM.Frequency = Do1; Thread.Sleep(180); myPWM.Frequency = Sib; Thread.Sleep(180); myPWM.Frequency = La; Thread.Sleep(300); myPWM.Frequency = Fa; Thread.Sleep(750); myPWM.Frequency = Sol; Thread.Sleep(750); myPWM.Frequency = Do; Thread.Sleep(1000); myPWM.Stop(); }
private void SetSpeed(PWM motor, OutputPort direction, int speed, bool isLeft) { motor.Stop(); motor.Frequency = MOTOR_BASE_FREQUENCY; if (speed == 0) { direction.Write(false); motor.DutyCycle = 0.01; } else if (speed < 0) { direction.Write(isLeft ? true : false); motor.DutyCycle = speed / -100.0; motor.Start(); } else { direction.Write(isLeft ? false : true); motor.DutyCycle = speed / 100.0; motor.Start(); } }
public void Disable() { if (controller != null) { controller.Stop(); } }
/// <summary> /// Stops the Servo Motor. /// </summary> public static void Deacticvate() { if (_started) { _pwm.Stop(); _started = false; } }
/// <summary> /// Stops the buzzer from playing. /// </summary> public static void Stop() { if (_started) { _pwm.Stop(); _started = false; } }
protected override void ActuatorCleanup() { if (_piezo == null) { return; } _piezo.Stop(); _piezo.Dispose(); }
void UpdateMotors(float motorLeftValue, float motorRightValue) { motorPwmLeft.Stop(); motorPwmRight.Stop(); motorPwmLeft.DutyCycle = motorLeftValue; motorPwmRight.DutyCycle = motorRightValue; motorPwmLeft.Start(); motorPwmRight.Start(); }
protected override void ActuatorCleanup() { if (_servoMotor == null) { return; } _servoMotor.DutyCycle = 0; _servoMotor.Stop(); _servoMotor.Dispose(); }
/// <summary> /// Moves the motor in the specified direction. /// </summary> /// <param name="direction">The direction : forward or backward.</param> /// <param name="speed">The speed, from 0.0 to 1.0 (100%)</param> /// <param name="rampTime">The ramp time if needed, in milliseconds. It's the time that will be taken to start from speed 0.0 to "Speed".</param> /// <example> /// <code language="C#"> /// // Moves the motor forward with a ramptime to full speed of 2 sec /// _motor.Move(DCMotorClick.Directions.Forward, 1.0, 2000); /// </code> /// </example> public void Move(Directions direction, Double speed = 1.0, Int32 rampTime = 0) { if (IsMoving) { _pwmOut.Stop(); Thread.Sleep(200); } _select2.Write(direction == Directions.Backward); if (rampTime == 0) { _pwmOut.DutyCycle = speed; IsMoving = true; _pwmOut.Start(); } else { _rampIncrement = (Int32)(speed / 0.05); _rampWaitTime = (Int32)(rampTime * 0.05 / speed); IsMoving = true; new Thread(RampUp).Start(); } }
static void TestPWM() { var pin = HardwareProvider.HwProvider.GetPwmPinForChannel(Cpu.PWMChannel.PWM_0); Debug.Print("PwmPinForChannel:" + pin); var count = HardwareProvider.HwProvider.GetPWMChannelsCount(); Debug.Print("PWMChannelsCount:" + count); //如果通道共用同一时钟,则周期以第一个的设置为准 var pwm0 = new PWM(Cpu.PWMChannel.PWM_0, 500, 250, PWM.ScaleFactor.Microseconds, false); // 可以得到稳定的1M输出,注意调整逻辑分析仪的采样频率 //var pwm1 = new PWM(Cpu.PWMChannel.PWM_4, 1000000, 0.5, false); var pwm1 = new PWM(Cpu.PWMChannel.PWM_4, 2, 1, PWM.ScaleFactor.Microseconds, false); Debug.Print("Period:" + pwm0.Period); Debug.Print("Duration:" + pwm0.Duration); var led = new OutputPort(ledPins[0], true); for (uint i = 1; i < 100; i++) { led.Write(!led.Read()); Debug.Print("pwm0 Start"); //pwm0.Duration = 5; pwm0.Start(); Thread.Sleep(500); Debug.Print("pwm0 Stop"); pwm0.Stop(); Debug.Print("pwm1 Start"); //pwm1.Duration = i; pwm1.Start(); Thread.Sleep(500); Debug.Print("pwm1 Stop"); pwm1.Stop(); Thread.Sleep(300); } //pwm1.Start(); while (true) { var b = led.Read(); led.Write(!b); Thread.Sleep(100); } //pwm0.Stop(); //pwm1.Stop(); }
// -------------------------------- Sensori -------------------------------- // private void InitSensors() { Mainboard.SetDebugLED(true); Gadgeteer.Socket socket = Gadgeteer.Socket.GetSocket(8, true, null, null); buzzer = new PWM(Cpu.PWMChannel.PWM_4, 1000, 0.5, false); buzzer.Stop(); orizzontal_mov = extender.CreatePwmOutput(Gadgeteer.Socket.Pin.Seven); vertical_mov = extender.CreatePwmOutput(Gadgeteer.Socket.Pin.Nine); current_orizzontal_pos = 0.075; current_vertical_pos = 0.075; orizzontal_mov.Set(50, current_orizzontal_pos); Thread.Sleep(2000); vertical_mov.Set(50, current_vertical_pos); }
public static void SendBit(PWM infraredOut, char c) { if (c == '1') { var startTime = DateTime.Now; infraredOut.Start(); while (startTime.AddMilliseconds(sleep) > DateTime.Now) { } infraredOut.Stop(); } else { var startTime = DateTime.Now; while (startTime.AddMilliseconds(sleep) > DateTime.Now) { } startTime = DateTime.Now; } }
public static void SendBit(PWM infraredOut, OutputPort led, char c) { if (c == '1') { var startTime = DateTime.Now; infraredOut.Start(); while (startTime.AddMilliseconds(200) > DateTime.Now) { led.Write(true); //noop } infraredOut.Stop(); } else { var startTime = DateTime.Now; while (startTime.AddMilliseconds(200) > DateTime.Now) { led.Write(false); //noop } startTime = DateTime.Now; } }
public static void Main() { // Create a PWM signal on Pin 3 @ 1000Hz and a 50% duty cycle PWM dutyCyclePwm = new PWM(PWMChannels.PWM_PIN_D3, 1000, .5, false); // note that only certain pins support PWM. the PWMChannels enumeration // lists the ones that do. // Create a PWM signal on the onboard LED by specifying the period and duration // in milliseconds. this will be a 33% duty cycle (on 1/3rd of the time) PWM periodDurationPwm = new PWM(PWMChannels.PWM_ONBOARD_LED, 3, 1, PWM.ScaleFactor.Milliseconds, false); // alternate between the 50% duty cycle and the 33% duty cycle every second while (true) { dutyCyclePwm.Start(); Thread.Sleep(1000); dutyCyclePwm.Stop(); periodDurationPwm.Start(); Thread.Sleep(1000); periodDurationPwm.Stop(); } }
private static void InitialiseLeds() { RedLedDutyCyclePwm.Stop(); YellowLedDutyCyclePwm.Stop(); GreenLedDutyCyclePwm.Stop(); }
public void Stop() { ThrowIfDisposed(); _pwm.Stop(); _isActive = false; }
public static void Main() { var songs = new[] { "The Simpsons:d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6" , "Indiana:d=4,o=5,b=250:e,8p,8f,8g,8p,1c6,8p.,d,8p,8e,1f,p.,g,8p,8a,8b,8p,1f6,p,a,8p,8b,2c6,2d6,2e6,e,8p,8f,8g,8p,1c6,p,d6,8p,8e6,1f.6,g,8p,8g,e.6,8p,d6,8p,8g,e.6,8p,d6,8p,8g,f.6,8p,e6,8p,8d6,2c6" , "TakeOnMe:d=4,o=4,b=160:8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5,8f#5,8e5,8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5" , "Entertainer:d=4,o=5,b=140:8d,8d#,8e,c6,8e,c6,8e,2c.6,8c6,8d6,8d#6,8e6,8c6,8d6,e6,8b,d6,2c6,p,8d,8d#,8e,c6,8e,c6,8e,2c.6,8p,8a,8g,8f#,8a,8c6,e6,8d6,8c6,8a,2d6" , "Muppets:d=4,o=5,b=250:c6,c6,a,b,8a,b,g,p,c6,c6,a,8b,8a,8p,g.,p,e,e,g,f,8e,f,8c6,8c,8d,e,8e,8e,8p,8e,g,2p,c6,c6,a,b,8a,b,g,p,c6,c6,a,8b,a,g.,p,e,e,g,f,8e,f,8c6,8c,8d,e,8e,d,8d,c" , "Xfiles:d=4,o=5,b=125:e,b,a,b,d6,2b.,1p,e,b,a,b,e6,2b.,1p,g6,f#6,e6,d6,e6,2b.,1p,g6,f#6,e6,d6,f#6,2b.,1p,e,b,a,b,d6,2b.,1p,e,b,a,b,e6,2b.,1p,e6,2b." , "Looney:d=4,o=5,b=140:32p,c6,8f6,8e6,8d6,8c6,a.,8c6,8f6,8e6,8d6,8d#6,e.6,8e6,8e6,8c6,8d6,8c6,8e6,8c6,8d6,8a,8c6,8g,8a#,8a,8f" , "20thCenFox:d=16,o=5,b=140:b,8p,b,b,2b,p,c6,32p,b,32p,c6,32p,b,32p,c6,32p,b,8p,b,b,b,32p,b,32p,b,32p,b,32p,b,32p,b,32p,b,32p,g#,32p,a,32p,b,8p,b,b,2b,4p,8e,8g#,8b,1c#6,8f#,8a,8c#6,1e6,8a,8c#6,8e6,1e6,8b,8g#,8a,2b" , "Bond:d=4,o=5,b=80:32p,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d#6,16d#6,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d6,16c#6,16c#7,c.7,16g#6,16f#6,g#.6" , "MASH:d=8,o=5,b=140:4a,4g,f#,g,p,f#,p,g,p,f#,p,2e.,p,f#,e,4f#,e,f#,p,e,p,4d.,p,f#,4e,d,e,p,d,p,e,p,d,p,2c#.,p,d,c#,4d,c#,d,p,e,p,4f#,p,a,p,4b,a,b,p,a,p,b,p,2a.,4p,a,b,a,4b,a,b,p,2a.,a,4f#,a,b,p,d6,p,4e.6,d6,b,p,a,p,2b" , "StarWars:d=4,o=5,b=45:32p,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#.6,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#6" , "GoodBad:d=4,o=5,b=56:32p,32a#,32d#6,32a#,32d#6,8a#.,16f#.,16g#.,d#,32a#,32d#6,32a#,32d#6,8a#.,16f#.,16g#.,c#6,32a#,32d#6,32a#,32d#6,8a#.,16f#.,32f.,32d#.,c#,32a#,32d#6,32a#,32d#6,8a#.,16g#.,d#" , "TopGun:d=4,o=4,b=31:32p,16c#,16g#,16g#,32f#,32f,32f#,32f,16d#,16d#,32c#,32d#,16f,32d#,32f,16f#,32f,32c#,16f,d#,16c#,16g#,16g#,32f#,32f,32f#,32f,16d#,16d#,32c#,32d#,16f,32d#,32f,16f#,32f,32c#,g#" , "A-Team:d=8,o=5,b=125:4d#6,a#,2d#6,16p,g#,4a#,4d#.,p,16g,16a#,d#6,a#,f6,2d#6,16p,c#.6,16c6,16a#,g#.,2a#" , "Flinstones:d=4,o=5,b=40:32p,16f6,16a#,16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c6,d6,16f6,16a#.,16a#6,32g6,16f6,16a#.,32f6,32f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c6,a#,16a6,16d.6,16a#6,32a6,32a6,32g6,32f#6,32a6,8g6,16g6,16c.6,32a6,32a6,32g6,32g6,32f6,32e6,32g6,8f6,16f6,16a#.,16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#6,16c7,8a#.6" , "Jeopardy:d=4,o=6,b=125:c,f,c,f5,c,f,2c,c,f,c,f,a.,8g,8f,8e,8d,8c#,c,f,c,f5,c,f,2c,f.,8d,c,a#5,a5,g5,f5,p,d#,g#,d#,g#5,d#,g#,2d#,d#,g#,d#,g#,c.7,8a#,8g#,8g,8f,8e,d#,g#,d#,g#5,d#,g#,2d#,g#.,8f,d#,c#,c,p,a#5,p,g#.5,d#,g#" , "Gadget:d=16,o=5,b=50:32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,32d#,32f,32f#,32g#,a#,d#6,4d6,32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,8d#" , "Smurfs:d=32,o=5,b=200:4c#6,16p,4f#6,p,16c#6,p,8d#6,p,8b,p,4g#,16p,4c#6,p,16a#,p,8f#,p,8a#,p,4g#,4p,g#,p,a#,p,b,p,c6,p,4c#6,16p,4f#6,p,16c#6,p,8d#6,p,8b,p,4g#,16p,4c#6,p,16a#,p,8b,p,8f,p,4f#" , "MahnaMahna:d=16,o=6,b=125:c#,c.,b5,8a#.5,8f.,4g#,a#,g.,4d#,8p,c#,c.,b5,8a#.5,8f.,g#.,8a#.,4g,8p,c#,c.,b5,8a#.5,8f.,4g#,f,g.,8d#.,f,g.,8d#.,f,8g,8d#.,f,8g,d#,8c,a#5,8d#.,8d#.,4d#,8d#." , "LeisureSuit:d=16,o=6,b=56:f.5,f#.5,g.5,g#5,32a#5,f5,g#.5,a#.5,32f5,g#5,32a#5,g#5,8c#.,a#5,32c#,a5,a#.5,c#.,32a5,a#5,32c#,d#,8e,c#.,f.,f.,f.,f.,f,32e,d#,8d,a#.5,e,32f,e,32f,c#,d#.,c#" , "MissionImp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d" , "axelf2:d=4,o=5,b=125:e,8g.,8e,16e,8a,8e,8d,e,8b.,8e,16e,8c6,8b,8g,8e,8b,8e6,16e,8d,16d,8b4,8f#,e,2p,e,8g.,8e,16e,8a,8e,8d,e,8b.,8e,16e,8c6,8b,8g,8e,8b,8e6,16e,8d,16d,8b4,8f#,e" , "StWars:d=4,o=5,b=160:8f,8f,8f,2a#.,2f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8d#6,2c6,p,8f,8f,8f,2a#.,2f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8d#6,2c6" , "PacMan:d=4,o=5,b=90:32b,32p,32b6,32p,32f#6,32p,32d#6,32p,32b6,32f#6,16p,16d#6,16p,32c6,32p,32c7,32p,32g6,32p,32e6,32p,32c7,32g6,16p,16e6,16p,32b,32p,32b6,32p,32f#6,32p,32d#6,32p,32b6,32f#6,16p,16d#6,16p,32d#6,32e6,32f6,32p,32f6,32f#6,32g6,32p,32g6,32g#6,32a6,32p,32b.6" }; var pwm = new PWM(Cpu.PWMChannel.PWM_4, 50, 0, false); var player = new RttlPlayer(new PwmSpeaker(pwm)); foreach (string song in songs) { player.Play(song); } pwm.Stop(); }
public void Stop() { //this.Dispose(); pwm.Stop(); }
static void Main(string[] args) { int result = GPIO_Init.WiringPiSetup(); if (result == -1) { Console.WriteLine("WiringPi init failed!"); } else { Console.WriteLine("WiringPi init success!"); //int R_pin = 27; //int G_pin = 28; //int B_pin = 29; int W_pin = 21; //int Fan_pin = 24; //soft pins 21 22 24 25 26 27 28 29 //hardware pins 23 PWM pwm = new PWM(); //pwm.Attach(R_pin); //pwm.Attach(G_pin); //pwm.Attach(B_pin); pwm.Attach(W_pin); //pwm.Write(W_pin, 1024); //pwm.Attach(Fan_pin); //string s = ""; Random rd = new Random(); while (!Console.KeyAvailable) { //if (Console.KeyAvailable) //{ // s += Console.ReadKey().KeyChar; // if (s.EndsWith("\r") || s.EndsWith("\n")) // { // int p = 0; // if (int.TryParse(s, out p)) // { // p = Math.Max(0, Math.Min(pwm.PWM_MAX, p)); // pwm.Write(pin, p); // Console.WriteLine("PWM set to: " + p + "/" + pwm.PWM_MAX); // } // s = ""; // } //} Console.WriteLine("Fading In"); for (int i = 0; i <= pwm.PWM_MAX; i += 8) { pwm.Write(W_pin, i); if (i % 128 == 0) { Console.Write(i + ", "); } GPIO.Timing.delay(40); } Console.WriteLine(); Console.WriteLine("Fading Out"); if (Console.KeyAvailable) { break; } for (int i = pwm.PWM_MAX; i >= 0; i -= 8) { pwm.Write(W_pin, i); if (i % 128 == 0) { Console.Write(i + ", "); } GPIO.Timing.delay(40); } Console.WriteLine(); Console.Write("10 Random Values: "); if (Console.KeyAvailable) { break; } for (int i = 10; i >= 0; i--) { int r = rd.Next(0, pwm.PWM_MAX); pwm.Write(W_pin, r); Console.Write(r + ", "); GPIO.Timing.delay(200); } Console.WriteLine(); } pwm.Stop(); } }
public void Halt() { _leftPWM.Stop(); _rightPWM.Stop(); }
public static void Halt() { leftPWM.Stop(); rightPWM.Stop(); }