A/D変換のポート使ってセンサーの値読みたいと思ってるけど、なかなかうまくいかない。
多分データの取り出しか、変換完了の判別がうまくいってないんじゃないかと思うんやけど、、、
だれかHELP!
うーん、どうすればいいんやろう?
割り込み許可したし、ADMUXとADCSRA,ADCSRBの設定したのになー・・・
わけわかめ。
2014年6月12日木曜日
2014年6月8日日曜日
PWMでサーボ動かす
PWMでサーボを動かしてみた。
サーボにVCC,GND,PWMの線をつなげば動いた。
今回は、Amazon で2個入り980円で売ってるTowerPro Micro Servo SG90を使った。
PWMはOCR0Bから出した。
サーボは周期を20msくらいにして・・・らしい。
よくわからん。
とりあえず、8bit高速PWM、前置分周を64分周にしたらいいらしい。
ほかにもなんか書いてあったけど、、、よくわからん。
ていうか、前置分周がわからん。
読んだけどわからん。
後、サーボの角度とプログラムでの数値 i は、
i = (角度)/7 + 9
らしい。
i = (角度)/7 + 8
のほうが安定するらしい。
とりあえず、プログラムこんな感じ。
/* Name: main.c
* Author: <insert your name here>
* Copyright: <insert your copyright message here>
* License: <insert your license reference here>
*/
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
TCCR0A = 0b10100011;
TCCR0B = 0b00000011;
DDRD = 0xff;
OCR0A = 0x00;
OCR0B = 0x00;
/* insert your hardware initialization here */
for(;;){
//if(OCR0A == 0x80) OCR0A = 0x00;
//OCR0A ++;
//_delay_ms(1);
OCR0B = 14;
/* insert your main loop code here */
}
return 0; /* never reached */
}
なんかよくわからんけど、とりあえず動いた。
うーん。。。
とりあえず、次はA/D変換のピン使ってアナログ値を読むことをがんばる。
2014年6月5日木曜日
PWMでLEDの輝度調節
前の回路図とか作んのめんどくさくなってきた。
とりあえず、前のLEDチカチカさせるのから、発展?して、PWMで輝度を調節する。
とりあえず、プログラムはこれ。
よくわからんけど。
OCR0Bが最小値にでもなんのかな?わからん。
とりあえず、前のLEDチカチカさせるのから、発展?して、PWMで輝度を調節する。
とりあえず、プログラムはこれ。
/* Name: main.c
* Author: <insert your name here>
* Copyright: <insert your copyright message here>
* License: <insert your license reference here>
*/
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
TCCR0A = 0b10100011;
TCCR0B = 0b00000001;
DDRD = 0xff;
OCR0A = 0x02;
OCR0B = 0x01;
/* insert your hardware initialization here */
for(;;){
if(OCR0A == 0x80) OCR0A = 0x02;
OCR0A ++;
_delay_ms(1);
/* insert your main loop code here */
}
return 0; /* never reached */
}
比較一致で、非反転動作。8bit高速PWM動作。前置分周なし。
TCCR0AとTCCR0Bでこれらを設定。
DDRDで、出力の方向を決定。
前置分周よくわかってない。
PWM出力はOCR0A(PD6)につないでいるから、OCR0Aだけ数値入れればいいのかと思ってたけど、OCR0Bにも値を入れないといけないみたい。
とりあえず、OCR0Aの値を変更すると、LEDの輝度が変化。
プログラムでは、ちょっとずつ明るくなっていって、消える。っていうのを繰り返してる。
トランジスタ(1815)のエミッタにGND、コレクタに抵抗(200Ω)を介してLEDのカソード、ベースに抵抗(10kΩ)を介してPWMピンをつないだ。
登録:
投稿 (Atom)