Arduino的崇高感和Lilytiny的优美感

Arduino的崇高感和Lilytiny的优美感

Arduino的易用性让我们设计物理实验的想法成为现实,这说明以方便易用为目的的单片机产品发展方向是崇高的;而Arduino家庭多数使用的是Atmel芯片,基于ATtiny的微小型芯片除了Gemma,还有Lilytiny和LilyPad,从名字就能看出她们的优美感,如果一定要有中文的名字,也许叫她们莉莉蒂妮和莉莉帕德的好。

不过,Arduino是开源的,因此这种开发板规格非常的混乱,不易使用。

第一乱,是这种开发板的名称:有的称为CJMCU Lilytiny,有的称为MCU Lilytiny,甚至LilyUSB等,总之是CJMCU/MCU与Lilytiny/LilyUSB等组合出来的名称,这会让我们在中英文网站里寻找资料时,都很困难。

第二乱,是我们难于辨认在淘宝上的这种开发板是国内自制的,还是原产的。当然从价格与包装上往往能够识别,原产的开发板包装一般非常精致,而仿制的一般只用防静电袋包装且大约7元左右的价格。

这些都不是最重要的,重要的是我确实看不到这种开发板的DataSheets或者PCB图,于是P0至P5这6个引脚一直没弄明白到底有什么功能和区别。昨天搞明白了手里的Gemma,也烧录了代码——Gemma只有3只引脚可用,直径28mm,而Lilytiny的直径,则是25mm。做一些事情时,使用Lily的优势是显然的。

Lilytiny与Gemma的烧录有微微的不同。记录如下。

为烧录Lily的代码,网上有一种Arduino IDE,是从很久以前的一种Arduino IDE改造的版本演化来的,一切使用都正常,只是IDE还是1.04的版本,同样的也要安装libusb-win32 devices这个驱动,否则Lilytiny也不能正常烧写,因为显然它也不需要Com号。Lilytiny烧写和Gemma又有不同,必须在烧写之前拔掉USB线,然后烧写,IDE提示插入,这时要在60s内插入才能正常烧写。

为了测试Lilytiny的引脚,我们改造Blink:

void setup() {                
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop() {
  digitalWrite(0, HIGH);
  digitalWrite(1, LOW);
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  delay(50);
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  delay(50);
}

找个LED分别插到P0至P5与GND,发现:P0、P1、P2、P3、P4均可作为输出,P5为复位RST。

给每个引脚写PWM,只有P0、P1能正常实现。P0、P1为PWM引脚。

同时测试到,板载LED为P1引脚,与UNO的A13类似。

在琢磨Analog的读和写的时候,发现在http://digistump.com/wiki/digispark/tutorials/basics有一些关于LilyTiny的介绍,复制粘贴,整理如下。

Differences (from the Arduino) and limitations

The Digispark is compatible with the Arduino IDE - that does not, however, mean it can do everything an Arduino can do. In order to achieve the low cost and small size of the Digispark some compromises had to be made.

Here is a list of some of the differences worth considering when designing or troubleshooting (pin differences are outlined in the sections below this list):

The Digispark is powered by an Atmel Attiny85 MCU - this has many differences from an Arduino's ATmega328 and some libraries may not work correctly on it.

The Digispark only has about 6 KB of flash memory for storing your code.

Pin 3 and Pin 4 (P3 and P4) are used for USB communication and programming, while you can use them in your circuit if you are not using USB communication, you may have to unplug your circuit during programming if the circuit would impede the pin states or dramatically affect the voltage levels on these pins.

Pin 3 (P3) has a 1.5 kΩ pull-up resistor attached to it which is required for when P3 and P4 are used for USB communication (including programming). Your design may need to take into account that you'd have to overpower this to pull this pin low.

The Digispark does not have a hardware serial port nor a hardware serial to USB converter. An example library (DigiUSB) is provided, as well as some example code and a serial monitor like program, but communication with the computer will not always be plug and play, especially when other libraries are involved. 这里P3、P4虽然可以用软串口库模拟,但是模拟之后,错误的时间比正常的时间多太多,大概是不能实用。

DigitalWrite:

void setup() {
    //All pins are capable of Digital output, though P5 is 3 V at HIGH instead of 5 V
//是3V而不是5V,因此可以直接不限流不分压直接串LED
    pinMode(0, OUTPUT); //0 is P0, 1 is P1, 2 is P2, etc. - unlike the analog inputs, for digital outputs the pin number matches.
}

void loop() {
    digitalWrite(0,HIGH); //Turn the pin HIGH (5 V)
    delay(1000);
    digitalWrite(0,LOW); //Turn the pin LOW (GND)
    delay(1000);
}

Digital Read:

NOTE: The internal pull-up resistor (turned on by calling digitalWrite(0) after setting the pin to output, where 0 is the pin number) are much weaker (about 25 kohm) on an ATtiny than on an Arduino, so the onboard LED interferes with them. If you need them, you can use a different port. Change your circuit to not need the internal pull-up, or cut the LED trace. For Model A this would apply to P1 for Model B this would apply to P0.(Model Identification)

int sensorValue = 0;

void setup() {
    //All pins are capable of digital input.
    pinMode(0, INPUT); //0 is P0, 1 is P1, 2 is P2, etc. - unlike the analog inputs, for digital inputs the pin number matches.
}

void loop() {
    sensorValue = digitalRead(1); //Returns HIGH or LOW (true or false / 1 or 0).
}

Analog Read:

int sensorValue = 0;

void setup() {
    //You need not set pin mode for analogRead - though if you have set the pin to
    //output and later want to read from it then you need to set pinMode(0,INPUT);
    //where 0 is the physical pin number not the analog input number.
    //
    //See below for the proper pinMode statement to go with each analog read.
}

void loop() {
    // The analog pins are referenced by their analog port number, not their pin
    //number and are as follows:

sensorValue = analogRead(1); //Read P2
    //To set to input: pinMode(2, INPUT);
    //THIS IS P2, P2 is analog input 1, so when you are using analog read, you refer to it as 1.

//sensorValue = analogRead(2); //Read P4
    //To set to input: pinMode(4, INPUT);
    //THIS IS P4, P4 is analog input 2, so when you are using analog read, you refer to it as 2.

//sensorValue = analogRead(3); //Read P3
    //To set to input: pinMode(3, INPUT);
    //THIS IS P3, P3 is analog input 3, so when you are using analog read, you refer to it as 3.

//sensorValue = analogRead(0); //Read P5
    //To set to input: pinMode(5, INPUT);
    //THIS IS P5, P5 is analog input 0, so when you are using analog read, you refer to it as 0.
}

Analog Write: (AKA PWM)

void setup() {
    //P0, P1, and P4 are capable of hardware PWM (analogWrite).
    pinMode(0, OUTPUT); //0 is P0, 1 is P1, 4 is P4 - unlike the analog inputs, 
                        //for analog (PWM) outputs the pin number matches the port number.
}

void loop() {
    analogWrite(0,255); //Turn the pin on full (100%)
    delay(1000);
    analogWrite(0,128); //Turn the pin on half (50%)
    delay(1000);
    analogWrite(0,0);   //Turn the pin off (0%)
    delay(1000);
}

(0)

相关推荐

  • 干货 | 深入浅出聊聊H桥驱动电路

    什么是H桥? H桥是一个比较简单的电路,通常它会包含四个独立控制的开关元器件(例如MOS-FET),它们通常用于驱动电流较大的负载,比如电机,至于为什么要叫H桥(H-Bridge),因为长得比较像字母 ...

  • 从进化视角看自然优美感和崇高感

    康德认为,人在面对自然环境时有可能产生两种"较精致的感情":一种是优美的感情,另一种是崇高的感情.这两种感情之所以能够并置,是因为它们都可以给人以愉悦之感,不过给予的方式有所不同. ...

  • 康德:论优美感和崇高感

    伊曼努尔·康德(德文:Immanuel Kant,公元1724年4月22日-公元1804年2月12日,享年79岁),出生和逝世于德国柯尼斯堡,德国人,作家.哲学家,德国古典哲学创始人,其学说深深影响近 ...

  • 第338期 | 人大校园里的崇高感

    又到了大学生们即将毕业的时候了. 人民大学这两天可是显得格外忙碌. 徐悲鸿艺术学院更是一片热闹,音乐系的学生举办毕业音乐会,绘画系的同学除了办毕业画展,他们还在学院门口办起一个卖画的小集市,想把这几年 ...

  • 孟子日课255丨唤醒内心的崇高感

    每日一课读经典,这里是尔雅书苑.今天是孟子日课第255讲.欢迎你留言交流. 王子垫问曰:"士何事?" 孟子曰:"尚志." 曰:"何谓尚志?" ...

  • 【我心光明】崇高感

    让知识回家 一站式收藏您的阅读与创作 [我心光明] 崇高感     崇高感,来自心中一念怎么把一份平凡的工作做得不平凡,激发出内心的崇高感?     "阳明先生教诲我们:'素富贵,行乎富贵' ...

  • 论“杀猪师傅的崇高感和师娘的优美感”

    我的杀猪师傅程国栋,山里人,胸怀大山一样博大,全心全意为人民杀猪二十年,杀猪成果丰富,实乃国之栋梁,望之可让人顿生一种崇高感. 梁国栋从小就与众不同,玩都玩得与众不同.比如过年玩二踢脚,一般孩子也就玩 ...

  • 居家实验:关于LC阻尼振荡优美感的参数试验

    居家实验:关于LC阻尼振荡优美感的参数试验 一.研究的背景 大约在4月底的时候,我尝试使用比较简单的器材进行 阻尼振荡实验,其间经历过错误."假振荡"(寄生振荡)和清晰的阻尼振荡. ...

  • 观点 | 康德:人类的崇高感和优美感

    悟性是崇高的,机智是优美的.勇敢是崇高而伟大的,巧妙是渺小的但却是优美的. 克伦威尔说过,审慎乃是市长的一种德行.真诚和政治是淳朴的和高贵的,开玩笑和开心的恭维是精妙的和优美的.彬彬有礼是道德的优美. ...

  • 100首轻音乐精修190分钟 优品味收藏版

    100首轻音乐精修190分钟 优品味收藏版