2016-10-05 19 views
1

このプログラムにArduinoライブラリ(または任意のライブラリ)を使用することはできません。どうすればピンの入力を確認できますか? Arduino.hでArduinoライブラリなしでピン入力を取得

#define bitRead(value, bit) (((value) >> (bit)) & 0x01) 

pgmspace.hに戻っdigitalReadを以下に示します。

が、私は2つの異なる機能見つかった最初の1のために

#define __LPM_enhanced__(addr) \ 
(__extension__({    \ 
    uint16_t __addr16 = (uint16_t)(addr); \ 
    uint8_t __result;   \ 
    __asm__ __volatile__  \ 
    (       \ 
     "lpm %0, Z" "\n\t"  \ 
     : "=r" (__result)  \ 
     : "z" (__addr16)  \ 
    );       \ 
    __result;     \ 
})) 

を、私はしないでくださいビットと値がどこから来ているかを知っていて、私はちょうど2番目を理解していません。

+0

この質問をArduinoの正しいスタック交換に投稿する必要があるかもしれません。 http://api.jquery.com/category/selectors/attribute-selectors/ –

+0

arduinoライブラリを使用できないのはなぜですか? – Qix

+0

@HussainPatel jQuery APIへのリンクを投稿しました。 – Qix

答えて

1

これらの実装に進む必要はありません。それは次のようにかなり簡単です。

LED 0は、ピン0がハイのときに点灯します。私はArduinoの

#include <avr/io.h>          // Includes all the definition of register port etc 
 
#ifndef F_CPU 
 

 
#define F_CPU 16000000UL  //Need to include it before <util/delay.h> 
 

 
#endif          //Change 16000000 with your crystal freq. In my case its 16 MHz 
 

 
#include <util/delay.h> //includes delay functions delay_ms and delay_us 
 

 
void setup() { 
 
    // put your setup code here, to run once: 
 
    DDRB |= 0xFF; //Configured Port B as OP 
 
    DDRD &= 0x00; //Configured Port D as IP 
 
} 
 

 
void loop() { 
 
    // put your main code here, to run repeatedly: 
 
    
 
    if (PIND&(0x01)) //to check pin0 of portD (which is Pin 0 of arduino) 
 
    PORTB |= 0xFF; 
 
    else 
 
    PORTB &= 0x00; 
 

 
}

+0

ライブラリを全く使用していないので、私はまだPINDにアクセスする関数を書いています? – kingcobra1986

+1

はい、arduinoでプログラミングしているので、実際にはATMega328Pでプログラミングしているので、コードをそのまま書く必要があります。 arduinoライブラリは、これを心配する必要はありません。 – Foitn

+0

@FoitnまたはATMega168 - Arduino Proミニボードのようです。 –

0

にこのコードをテストした私は、しかし、一般的なルールは任意のアルドゥイーノに適用され、あなたはArduinoの宇野を使用することを前提としています。

まず、あなたはArduinoのピンマッピングを確認する必要があります:

その後、あなたはAtmega168/328上のデジタルピン2、そうPD2を使用したいとしましょう。 (PD2はPORTDピン2の略です)。あなたがする必要があるの入力として使用するには:

if (PIND & (1<<PD2)) { 
    // do something 
} 

DDRD &= ~(1 << PD2); 

DDRDは、ポートのためのD.全体の動作は、このピンを読むために2次に 0にピンに対応するビットをセットするデータ方向レジスタであります

また、シングルビットを操作する方法を確認してください。How do you set, clear, and toggle a single bit?

関連する問題