feat: 全量同步 254 个常用的 Arduino 扩展库文件
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
#include <TimerOne.h>
|
||||
|
||||
// This example creates a PWM signal with 25 kHz carrier.
|
||||
//
|
||||
// Arduino's analogWrite() gives you PWM output, but no control over the
|
||||
// carrier frequency. The default frequency is low, typically 490 or
|
||||
// 3920 Hz. Sometimes you may need a faster carrier frequency.
|
||||
//
|
||||
// The specification for 4-wire PWM fans recommends a 25 kHz frequency
|
||||
// and allows 21 to 28 kHz. The default from analogWrite() might work
|
||||
// with some fans, but to follow the specification we need 25 kHz.
|
||||
//
|
||||
// http://www.formfactors.org/developer/specs/REV1_2_Public.pdf
|
||||
//
|
||||
// Connect the PWM pin to the fan's control wire (usually blue). The
|
||||
// board's ground must be connected to the fan's ground, and the fan
|
||||
// needs +12 volt power from the computer or a separate power supply.
|
||||
|
||||
const int fanPin = 4;
|
||||
|
||||
void setup(void)
|
||||
{
|
||||
Timer1.initialize(40); // 40 us = 25 kHz
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
void loop(void)
|
||||
{
|
||||
// slowly increase the PWM fan speed
|
||||
//
|
||||
for (float dutyCycle = 30.0; dutyCycle < 100.0; dutyCycle++) {
|
||||
Serial.print("PWM Fan, Duty Cycle = ");
|
||||
Serial.println(dutyCycle);
|
||||
Timer1.pwm(fanPin, (dutyCycle / 100) * 1023);
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#include <TimerOne.h>
|
||||
|
||||
void setup()
|
||||
{
|
||||
// Initialize the digital pin as an output.
|
||||
// Pin 13 has an LED connected on most Arduino boards
|
||||
pinMode(13, OUTPUT);
|
||||
|
||||
Timer1.initialize(100000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
|
||||
Timer1.attachInterrupt( timerIsr ); // attach the service routine here
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// Main code loop
|
||||
// TODO: Put your regular (non-ISR) logic here
|
||||
}
|
||||
|
||||
/// --------------------------
|
||||
/// Custom ISR Timer Routine
|
||||
/// --------------------------
|
||||
boolean sta=false;
|
||||
void timerIsr()
|
||||
{
|
||||
// Toggle LED
|
||||
sta=!sta;
|
||||
digitalWrite( 13, sta);
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
#include <TimerOne.h>
|
||||
|
||||
// This example uses the timer interrupt to blink an LED
|
||||
// and also demonstrates how to share a variable between
|
||||
// the interrupt and the main program.
|
||||
|
||||
|
||||
const int led = LED_BUILTIN; // the pin with a LED
|
||||
|
||||
void setup(void)
|
||||
{
|
||||
pinMode(led, OUTPUT);
|
||||
Timer1.initialize(150000);
|
||||
Timer1.attachInterrupt(blinkLED); // blinkLED to run every 0.15 seconds
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
|
||||
// The interrupt will blink the LED, and keep
|
||||
// track of how many times it has blinked.
|
||||
int ledState = LOW;
|
||||
volatile unsigned long blinkCount = 0; // use volatile for shared variables
|
||||
|
||||
void blinkLED(void)
|
||||
{
|
||||
if (ledState == LOW) {
|
||||
ledState = HIGH;
|
||||
blinkCount = blinkCount + 1; // increase when LED turns on
|
||||
} else {
|
||||
ledState = LOW;
|
||||
}
|
||||
digitalWrite(led, ledState);
|
||||
}
|
||||
|
||||
|
||||
// The main program will print the blink count
|
||||
// to the Arduino Serial Monitor
|
||||
void loop(void)
|
||||
{
|
||||
unsigned long blinkCopy; // holds a copy of the blinkCount
|
||||
|
||||
// to read a variable which the interrupt code writes, we
|
||||
// must temporarily disable interrupts, to be sure it will
|
||||
// not change while we are reading. To minimize the time
|
||||
// with interrupts off, just quickly make a copy, and then
|
||||
// use the copy while allowing the interrupt to keep working.
|
||||
noInterrupts();
|
||||
blinkCopy = blinkCount;
|
||||
interrupts();
|
||||
|
||||
Serial.print("blinkCount = ");
|
||||
Serial.println(blinkCopy);
|
||||
delay(100);
|
||||
}
|
||||
Reference in New Issue
Block a user