e-tools研究所

e-tools研究所

PICマイコンの使いかた。電子工作。

Пікірлер

  • @pinkspyder.
    @pinkspyder.3 күн бұрын

    ロータリーテーブルに付けたら、とっても便利😊

  • @luisdominguez6350
    @luisdominguez635013 күн бұрын

    Library? For esp sdk?

  • @etools
    @etools13 күн бұрын

    Environment : VScode & Platform IO I am using the TFT 7735S driver that I previously wrote for a PIC microcontroller. I am converting it for use with the ESP32 using the ESP-IDF API. Qiita:qiita.com/etoolsLab369/items/c9ca5252e186f120cd96

  • @resistancesk5028
    @resistancesk502829 күн бұрын

    消費電力じゃなくて出力電流とか供給電流では?

  • @etools
    @etools29 күн бұрын

    ほぼ、5vで使うなら、たしかに、電流値にフォーカスした表現になりますね。

  • @user-gen-gorou
    @user-gen-gorouАй бұрын

    前にどっかで観た、ESP32よりグレードが低いマイコンで同じような動画では、もっと描写が早かったと記憶してるので、問題箇所を見つけて改善すれば劇的に速度が向上すると思います。

  • @noithugian494
    @noithugian4942 ай бұрын

    What software do you use to program?

  • @etools
    @etools2 ай бұрын

    I use the MPLAB IDE with XC8 compiler.

  • @noithugian494
    @noithugian4942 ай бұрын

    @@etools thanks

  • @sakukobayasi
    @sakukobayasi2 ай бұрын

    割り込みが便利も云うより「ポーリングが面倒&非効率」なのだと思う。適材適所だが。

  • @SENTIA_TEREA
    @SENTIA_TEREA2 ай бұрын

    滅茶苦茶基本のことから教えて下さってとても参考になります

  • @etools
    @etools2 ай бұрын

    コメントありがとう。PIC、arduino、ESP32、STM32など、どのマイコンも、同じ基本的な機能で構成されてるからね。

  • @unknownk.youtube
    @unknownk.youtube2 ай бұрын

    身近なモノが題材になると、急激に興味をそそられますね!🤩 イメージしやすいので、理解もしやすいです!😆(理解できたとは言っていない

  • @etools
    @etools2 ай бұрын

    そーなんだよね。マイコンで制御できそうなジャンクを、ハードオフとかで探すのが楽しいんですわ。

  • @etools
    @etools2 ай бұрын

    ボードの電源と、PICKIT3の電源供給が衝突しないように、”MPLABXで、電源供給をオンボード” へ切り替えてください。

  • @etools
    @etools2 ай бұрын

    ボードの電源と、PICKIT3の電源供給が衝突しないように、”MPLABXで、電源供給をオンボード” へ切り替えてください。

  • @etools
    @etools2 ай бұрын

    ボードの電源と、PICKIT3の電源供給が衝突しないように、”MPLABXで、電源供給をオンボード” へ切り替えてください。

  • @etools
    @etools2 ай бұрын

    ボードの電源と、PICKIT3の電源供給が衝突しないように、”MPLABXで、電源供給をオンボード” へ切り替えてください。

  • @unknownk.youtube
    @unknownk.youtube3 ай бұрын

    「LSI」ではなく、このいかにも「IC」という外観に心躍ります!🤩(←変態

  • @etools
    @etools3 ай бұрын

    変態ってドイツ語とか英語で、メタモルフォーゼ、かっこよくなっちゃうんだなー、これが。生物学と魔術の文脈での意味だけど。

  • @RS-kx9rp
    @RS-kx9rp3 ай бұрын

    良く分かってないが面白そう❤

  • @etools
    @etools3 ай бұрын

    たぶん、このコメントの感性が、最強だなぁ。なんかわかんないけど、いいとか。ようは、自身の直観のことだ。

  • @user-hm5ot8sx6b
    @user-hm5ot8sx6b3 ай бұрын

    まだ触ったことも無い初心者です。 「マクロ」とか「関数」とかExcel操作の時と同じ言葉だけど、イメージは同じかな?とか思いながら見てました。  作っている風景も興味深く参考になりました。  ありがとうございます。

  • @etools
    @etools3 ай бұрын

    コメント、ありがとう。マイコンは、やったことが、すべて自分の身になるし、楽しいよ。簡単なものでも、自分で作ると嬉しいものだよ。

  • @unknownk.youtube
    @unknownk.youtube3 ай бұрын

    10代の頃、電気回路の動作原理も分かっておらず、それまでキットの組み立てしか経験が無かったのに、LM386を秋月で購入してデータシートの回路図をユニバーサル基盤に丸写しして自家製アンプを作ったことがあります!😆 元パチンコ台に使われていたジャンクの「液晶ディスプレイ」と「コンポジットビデオ→RGB変換キット」と共に組み合わせて、ディスプレイ型3.5インチFDケースに収めて自家製スピーカー内蔵小型ディスプレイに!🖥 はぁ……電子回路を理解したいけど未だによく分からないの。🥲(ソフト畑

  • @etools
    @etools3 ай бұрын

    ウキウキしながら、物を作っていた10代の君の姿が、目に浮かぶようだ。

  • @unknownk.youtube
    @unknownk.youtube3 ай бұрын

    中学生の頃にアセンブラに出会い、必要に迫られて2進数への変換方法を調べると、「2で割って行き、余りがどうこう~」という説明ばかりで「割るの?余りを出すの?説明としては楽だろうけど、コンピューター的には効率的じゃないなあ」と思っていた。 動画のように「2のn乗の大きい方から『引けたらビットを立てて、引けなかったらビットを立てない』を全ビット分繰り返す」方法を自分で思い付き、「ワイ天才!🤪」と己惚れていた厨二時代。(← 他にも、バイナリサーチなんかも自分で思い付いて「やっぱりワイ天才!🤪」と思い上がっていたり。 後からその手法に名前すら付いている至極ポピュラーな方法と知ってガッカリした甘酸っぱい思い出。🤤 厨二時代の話なんで、許してあげてください。🙇

  • @etools
    @etools3 ай бұрын

    中学生で、その発想すごいね。元気な君のコメントを読んでいると、こちらも、楽しくなるよ。

  • @unknownk.youtube
    @unknownk.youtube3 ай бұрын

    Raspberry Pi/PicoシリーズやArduinoシリーズが主流になってきている中、逆にこういう より基礎的な基礎中の基礎に触れているモノが少なくなり、とても貴重で有難いです!😆 導入こそ上述の様な機器の方が適しているでしょうけど、特に「動作を理解する」という点においては、こういう よりLow Levelな階層から理解できるPICマイコンの方が適していると思いますしね!

  • @etools
    @etools3 ай бұрын

    的確なコメントありがとう。

  • @ky-dv8dz
    @ky-dv8dz3 ай бұрын

    なかな丁寧に説明するのは難しいよね。

  • @650gx_xperia4
    @650gx_xperia44 ай бұрын

    DENONのFMチューナ(TU500)のヘッドホン駆動回路が、このエミッタ~フォロワ回路です。

  • @love-de-lic
    @love-de-lic6 ай бұрын

    初めまして、動画製作お疲れ様です。いつも参考にさせて頂いています。 是非作って欲しいm5stackがあるのですが、 ジャイロセンサーを用いて、ボタンを押すと角度を0度に補正し、また違うボタンを押すと現在の角度を読み取り記録するような物を作って欲しいです。(ラチェットレンチに取り付けて、どのくらい回したか角度で読み取るものに使用したいです)是非参考にしたいので宜しくお願い致します。

  • @etools
    @etools6 ай бұрын

    RGBLEDの色指定 CRGB構造体 Blue=0x0000FF  Green=0x008000  Red=0xFF0000   24ビットデータ 配列の並びは raw[0]=Red(8bit),  raw[1]=Green(8bit),  raw[2]=Blue(8bit) の 順番

  • @ama_p213
    @ama_p2137 ай бұрын

    テスト用オブジェクトの見た目がそのまんまw( ^ω^) Unityに情報送れるの凄いですね👏

  • @chipman4933
    @chipman49338 ай бұрын

    私もPICで同じようなカラーLCDを使用したのですが、ものすごく早い描画ですね! 私のものと比べて10倍以上速いです。 数学を熟知されていると、ここまで違うのかと思い知らされました! (私は検索した計算サイトで出てきた式をそのままCで記述しました) これからも素敵な動画制作を期待しています。

  • @etools
    @etools9 ай бұрын

    Thank you for your advice. I thought it may be possible matrix LED indicater making.

  • @user-np3gm1ht5d
    @user-np3gm1ht5d9 ай бұрын

    Area = 1 x 12. 12 ÷ 3=4. Fold it up to make new Area = 4 x 3. Area = 1 x 25 . 25 ÷ 5 = 5. Fold it up to make new Area = 5 x 5.

  • @user-np3gm1ht5d
    @user-np3gm1ht5d9 ай бұрын

    LED Area = width x height. If it LED Area = 32 led x 32 led or even bigger value in width and height. Then it become PHD designing tool. Lots of picture figure work. Just run it with either binary bit left shift or right shift counter. LED Area = 1080 x 2000😊😊😉😉😉😉😊😊😊😉😊😊😊😉😊😊😊😊😉😊😊😊😊😉😊😊😊😊😊😉😊😊😊😊😊😉😊😊😊😊😊😉😊😊😊😊😊😉😊😊😊😊😊😊😉😊😊😊😊😊😉😊😊😊😊😊😉😊😊😊😊😊😉😊😊😊😊😊😊😉😊😊😊😊😊😊😊😊😉😉😉😋😊😊😊😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉😉

  • @user-np3gm1ht5d
    @user-np3gm1ht5d9 ай бұрын

    Led monitor.

  • @user-np3gm1ht5d
    @user-np3gm1ht5d9 ай бұрын

    😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊

  • @user-np3gm1ht5d
    @user-np3gm1ht5d9 ай бұрын

    It Area = 1 x 12. Area = width x height. If it Area = 32 x 32 or even bigger value in width and height. Then it become PHD designing tool. Lots of picture figure work. Just run it with either binary bit left shift or right shift counter. Area = 1080 x 2000

  • @turnplus2
    @turnplus29 ай бұрын

    とてもわかりやすかったです。何回か見直して勉強したいと思います。16F84Aでアセンブラを勉強したかったのですがPICの値上がりがすごくて秋月で550円もするのであきらめて前に購入してあった16F1827でC言語でマイコンの勉強をしようと思います。ありがとうございました。(#^^#)

  • @etools
    @etools9 ай бұрын

    書き込み機のUSB5vとブレッドボード供給5vが、ショートしないように注意してください。電源供給方法をMPLABで設定してください。コメントありがとうございます。

  • @turnplus2
    @turnplus29 ай бұрын

    返信ありがございます、嬉しかったです。MPLABの設定でPICkit4から電源供給しないのを確認しました。ありがとうございます。16F84Aの動画も見て勉強したい十と思います。@@etools

  • @user-gen-gorou
    @user-gen-gorou10 ай бұрын

    この回路をガンダムに取り付けよう。そして、すぐ実戦で試すんだ!!

  • @etools
    @etools10 ай бұрын

    #include <M5Stack.h> #define ADC_PIN 35 void setup(){ M5.begin(); pinMode(ADC_PIN,INPUT); M5.Lcd.setTextSize(3); M5.Lcd.setCursor(40,20); M5.Lcd.println("AD Converter"); M5.Lcd.setCursor(40,45); M5.Lcd.print("ADCpin:GPIO35 "); } void loop(){ int adc_val = analogRead(ADC_PIN); int adc_mVal = analogReadMilliVolts(ADC_PIN); M5.lcd.fillRect(0,100,280,200,BLACK); float Vout = adc_val/4095.0*3.3; M5.Lcd.setTextSize(3); M5.Lcd.setCursor(0,100); M5.Lcd.setTextColor(PINK); M5.Lcd.printf("analogRead "); M5.Lcd.setTextColor(WHITE); M5.Lcd.setTextSize(4); M5.Lcd.setCursor(0,130); M5.Lcd.printf("%3.2fV ",Vout); M5.Lcd.printf("%04d ",adc_val); float mVout = adc_mVal/4095.0*3.3; M5.Lcd.setTextSize(2); M5.Lcd.setCursor(0,160); M5.Lcd.setTextColor(ORANGE); M5.Lcd.printf("analogMilliVolts "); M5.Lcd.setTextSize(4); M5.Lcd.setTextColor(WHITE); M5.Lcd.printf("%3.2fV ",mVout); M5.Lcd.printf("%04d ",adc_mVal); delay(300); }

  • @JunConstellation
    @JunConstellation10 ай бұрын

    UNOはUSB⇔シリアル変換にATmega16u2を使っています。そのため、パソコンにつないで、キーボードの自動入力とか、マウスの制御もできますが、UNOでブートローダを書き込んでも、FTDI232がその機能に対応していないのでできません。 ブートローダ書き込むとしたらDuemilanoveか、pro miniの方がいいんじゃないかなぁ

  • @etools
    @etools11 ай бұрын

    #include <M5Stack.h> #include <Wire.h> void setup() { M5.begin(); Wire.begin(); M5.Lcd.setTextSize(3); M5.Lcd.setTextColor(WHITE); M5.Lcd.setCursor(20,50); M5.Lcd.print("I2C test"); M5.Lcd.setCursor(20,80); M5.Lcd.print("PCF8574"); M5.Lcd.setCursor(50,110); M5.Lcd.print("address 0x25"); M5.Lcd.setCursor(20,140); M5.Lcd.print("Send Data:"); M5.Lcd.setCursor(20,170); } void loop() { M5.Lcd.setCursor(20,170); M5.Lcd.setTextColor(WHITE,BLACK); M5.Lcd.print("0x55"); Wire.beginTransmission(0x25); Wire.write(0x55); Wire.endTransmission(true); delay(500); M5.Lcd.setCursor(20,170); M5.Lcd.setTextColor(WHITE,BLACK); M5.Lcd.print("0xAA"); Wire.beginTransmission(0x25); Wire.write(0xAA); Wire.endTransmission(true); delay(500); }

  • @user-dv2gp2hs3i
    @user-dv2gp2hs3i11 ай бұрын

    有用な動画のアップ、ありがとうございます。こちらの動画を拝見して、このPICを使い始めた者です。MCCを使用し、ソフト作成をしているのですが、ADコンバータが、想定の通りに動かなくて困っております。A/Dコンバータ、I2C通信など、その他の関連動画がアップされる日を楽しみにしています。

  • @user-kn1bk2c49k
    @user-kn1bk2c49k11 ай бұрын

    PICを使って何かを作ろうとした時に、書き込み機を購入しなければならないのはネックですね。 今後、色々と使っていく予定ならいいですが、今回限りかもしれないような時は自分ならArduinoかな。 ArduinoならUSBだけあればいいですからね。 とは言え趣味で色々と電子工作をしてみたい人はどっち使ってみたいでしょうね。

  • @user-gen-gorou
    @user-gen-gorou11 ай бұрын

    ゲームパッドは、スーファミ用ですか。

  • @bobby9568
    @bobby9568 Жыл бұрын

    素晴らしい。 自分で信号を生成しているのでしょうか?

  • @etools
    @etools Жыл бұрын

    dsPIC33EP256GP502を使用。コンパイラはXC16で、下記の近似式を計算させています。近似計算は、マイコンで行っています。そして、パソコンの自作プロッターソフトに送信して、波形をみています。パソコン側は、結果値を表示しているだけです。5ライン分送信していますが、必要な2ラインだけを、表示しています。 if(Tm5.fg) { Tm5.fg=false; if(ADC.fg) { ADC.fg=false; theta+=0.02; if(theta>6.28) theta=0; switch(state) { case 0: dval[0]=512*sin(theta)+511; val16[0]=(int)dval[0]; dval[1]=512*cos(theta)+511; val16[1]=(int)dval[1]; break; case 1: //palse Wave dbuf=sin(theta)+sin(3*theta)/3+sin(5*theta)/5+sin(7*theta)/7; dval[0]=300*dbuf+511; val16[0]=(int)dval[0]; val16[1]=0x0000; break; case 2: //triangle Wave dbuf=sin(theta)-sin(3*theta)/9+sin(5*theta)/25-sin(7*theta)/49; dval[0]=300*dbuf+511; val16[0]=(int)dval[0]; val16[1]=0x0000; break; case 3: //saw Wave dbuf=sin(theta)+sin(2*theta)/2+sin(3*theta)/3+sin(4*theta)/4+sin(5*theta)/5+sin(6*theta)/6; dval[0]=300*dbuf+511; val16[0]=(int)dval[0]; val16[1]=0x0000; break; } cnt++; if(cnt==1600) { cnt=0; state++; if(state==4) state=0; } txBuf[0]=0xF0; txBuf[1]=ADC.val[0]>>8; txBuf[2]=ADC.val[0]; txBuf[3]=ADC.val[1]>>8; txBuf[4]=ADC.val[1]; txBuf[5]=ADC.val[4]>>8; txBuf[6]=ADC.val[4]; txBuf[7]=val16[0]>>8; txBuf[8]=val16[0]; txBuf[9]=val16[1]>>8; txBuf[10]=val16[1]; txBuf[11]=0xE0; for(i=0; i<=11; i++) { putCH(txBuf[i]); } //printf("%d %d %d ",ADC.val[0],ADC.val[1],ADC.val[4]); IEC0bits.T3IE=1; } IEC1bits.T5IE=1; }

  • @etools
    @etools Жыл бұрын

    /*--------------------------------------------------- Timer0 8-bit Timer ---------------------------------------------------*/ volatile _tm tm0; void Timer0_INIT(void) { OPTION_REGbits.T0CS=0; //Fosc/4 OPTION_REGbits.PSA=0; //Prescaler assigned. OPTION_REGbits.PS=0b100; //1:32 TMR0=0x83; //1ms interval timer INTCONbits.INTF=0; INTCONbits.TMR0IE=1; tm0.cnt=0x0000; tm0.fg=false; } void __interrupt()isr() { uint8_t buf; if(INTCONbits.T0IF) { INTCONbits.T0IF=0; tm0.cnt++; TMR0=0x83; if(tm0.cnt==500) { tm0.cnt=0; tm0.fg=true; INTCONbits.T0IE=0; } } } void main(void) { Oscillator_Init(); Port_Init(); Timer0_INIT(); Interrupt_START(); while(1) { if(tm0.fg) { tm0.fg=false; LED0=~LED0; INTCONbits.T0IE=1; } } return; }

  • @etools
    @etools Жыл бұрын

    /** * 矩形描画関数 * @param _xs  X軸始点 * @param _ys  Y軸始点 * @param _xsize  X方向サイズ * @param _ysize  Y方向サイズ * @param _R 描画点 赤 * @param _G 描画点 緑 * @param _B 描画点 青 */ void ST7735S_Rectangle(uint8_t _xs, uint8_t _ys, uint8_t _xsize, uint8_t _ysize,uint8_t _R,uint8_t _G, uint8_t _B) { uint8_t x,y; //始点終点アドレスセット ST7735S_AddSet(_xs,_xs+_xsize,_ys,_ys+_ysize); //RAMライトコマンド送信 ST7735S_Write(ST7735_CM,RAMWR); ST7735_A0= ST7735_DT; //描画データ書き込みスタート(SPI CS=Low) SPI2_START(); for(x=0; x<=_xsize; x++) { SPI2TCNT=_ysize*3;//列データ個数=SPI送信個数 for(y=0; y<_ysize; y++) { SPI2_Write(_R);//1ポイント:赤 SPI2_Write(_G);//1ポイント:緑 SPI2_Write(_B);//1ポイント:青 //__delay_ms(50);//debug用(実行時コメントアウト) } } SPI2_STOP(); }

  • @Hiro-lm4by
    @Hiro-lm4by Жыл бұрын

    はじめまして。 PICについて調べていてこちらのチャンネルに辿り着きました。 自分のチャンネルで上げていますLEDのパターン点滅用のユニットを自作したくて昔から頑張って独学で色々調べていますが難し過ぎて自分の頭の悪さにげんなりしています。 しかしこちらのチャンネルでのPICの解説等は非常に分かり易くてなんとなく始められそうな気がしてきました! 1番気になるのはこの手の工作をする為の知識等はどのように習得されたのでしょうか? 自分は電子工学科卒等でなければ足を踏み入れられないと思っていたのですが独学でもある程度覚えられるものでしょうか?

  • @etools
    @etools Жыл бұрын

    ネットがあるので、独学で十分ですね、今の時代は。これからは、ChatGPTに聞けばいいし。 私の場合、学生時代に電気電子は、学んでいませんでした。 C言語は学習していたのですが。ソフトウェアの仕事に就いたのに、いきなり、電子回路設計を、ゼロ知識からやらされたのが、始まりで、I2CもSPIもしらず、基板すら作ったことがない。そこからすこしずつ、何年もかけて習得しました。ですが、、、奥が深いです、この世界は。 電子工作は、ネット検索がすごく役に立っています。 コメントありがとう。

  • @etools
    @etools Жыл бұрын

    //USART受信割込み処理---------------------------------- if(rxUsart.completed) { rxUsart.completed=0; printf("length=%d %s ",rxUsart.length,&rxUsart.buf); if(rxUsart.length==5 || rxUsart.length==6) { cnt=asciiToInt((char*)rxUsart.buf,rxUsart.length); printf("cnt=%ld",cnt); Ucnt=(long)(cnt*1000/703); printf(" %ld ",Ucnt); if(rxUsart.length==5) for(i=0; i<Ucnt; i++) { for(j=8; j>=1; j--) { LATB&=0xF0; LATB|=(uint8_t)halfStep[j]; __delay_us(1200); } } __delay_ms(500); if(rxUsart.length==6 && rxUsart.buf[0]=='-') for(i=0; i<Ucnt; i++) { for(j=1; j<=8; j++) { LATB&=0xF0; LATB|=(uint8_t)halfStep[j]; __delay_us(1200); } } __delay_ms(500); } rxUsart.length=0; PIE4bits.U1RXIE=1; }

  • @user-ev1lt7bt6t
    @user-ev1lt7bt6t Жыл бұрын

    更新楽しみにしています。

  • @HS-cx1uh
    @HS-cx1uh Жыл бұрын

    これは面白い!

  • @etools
    @etools Жыл бұрын

    ステッピングモータをつないだピン:RB0,1,2,3 and RD0,1,2,3 and RD4,5,6,7 unsigned int halfStep0[9]={0x0000,0x0001,0x0003,0x0002,0x0006,0x0004,0x000C,0x0008,0x0009}; //PORTB, PORTD unsigned int halfStep1[9]={0x0000,0x0010,0x0030,0x0020,0x0060,0x0040,0x00C0,0x0080,0x0090}; //PORTD uint8_t buttonNum; #define stDelayUS 1100 void steppingMover(void) { unsigned long Ucnt,i,j; uint8_t cnt; switch(buttonNum) { case 'L': for(j=1; j<=8; j++) { LATB&=0xF0; LATB|=(uint8_t)halfStep0[j]; __delay_us(stDelayUS); } break; case 'l': for(j=1; j<=8; j++) { LATD&=0x0F; LATD|=(uint8_t)halfStep1[j]; __delay_us(stDelayUS); } break; //--------------------------------------------------- case 'R': for(j=8; j>=1; j--) { LATB&=0xF0; LATB|=(uint8_t)halfStep0[j]; __delay_us(stDelayUS); } break; case 'r': for(j=8; j>=1; j--) { LATD&=0x0F; LATD|=(uint8_t)halfStep1[j]; __delay_us(stDelayUS); } break; //--------------------------------------------------- case 'U': for(j=1; j<=8; j++) { LATD&=0xF0; LATD|=(uint8_t)halfStep0[j]; __delay_us(stDelayUS); } break; case 'D': for(j=8; j>=1; j--) { LATD&=0xF0; LATD|=(uint8_t)halfStep0[j]; __delay_us(stDelayUS); } break; default: LATD&=0x00; LATB&=0xF0; break; } }

  • @etools
    @etools Жыл бұрын

    ******* スーファミボタンデータ取り出し ************** uint8_t getButtton(void) { uint16_t w_val; uint8_t cnt; w_val=0x0000; cnt=0; //トリガー出力*************************** PS=1; CLK=1; __delay_us(10); PS=0; CLK=0; __delay_us(10); w_val|=DATA1; w_val<<=1; cnt++; //クロック出力 & ビットデータ受信*************************** do{ CLK=1; __delay_us(10); CLK=0; // __delay_us(5); w_val|=DATA1; if(cnt!=15) { w_val<<=1; } cnt++; }while(cnt!=16);   //ビットデータ受信解析*************************** w_val&=0xFFF0; if(w_val!=0xFFF0) { if((w_val&0x8000)==0x0) printf("B "); if((w_val&0x4000)==0x0) printf("Y "); if((w_val&0x2000)==0x0) printf("SELECT "); if((w_val&0x1000)==0x0) printf("START "); if((w_val&0x0800)==0x0) { printf("UP "); }    if((w_val&0x0400)==0x0) { printf("DOWN "); } if((w_val&0x0200)==0x0) { printf("LEFT "); } if((w_val&0x0100)==0x0) { printf("RIGHT "); } if((w_val&0x0080)==0x0) printf("A "); if((w_val&0x0040)==0x0) printf("X "); if((w_val&0x0020)==0x0) { printf("L "); } if((w_val&0x0010)==0x0) { printf("R "); } printf("%04x ",w_val); } return ' '; //__delay_ms(1); }

  • @うまうま株式会社
    @うまうま株式会社 Жыл бұрын

    !? やば

  • @etools
    @etools Жыл бұрын

    #include <xc.h> #define _XTAL_FREQ 8000000 // PIC12F683 Configuration Bit Settings // 'C' source line config statements // CONFIG #pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled) #pragma config MCLRE = ON // MCLR Pin Function Select bit (MCLR pin function is MCLR) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = ON // Brown Out Detect (BOR enabled) #pragma config IESO = ON // Internal External Switchover bit (Internal External Switchover mode is enabled) #pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. void main(void) { TRISIO=0x00; ANSEL=0x00; WPU=0x00; IOC=0x00; GPIO=0x00; while(!OSCCONbits.HTS); OSCCONbits.IRCF=0b111;//8Mhz while(!OSCCONbits.HTS); while(1) { __delay_ms(500); GPIObits.GP4=1; __delay_ms(500); GPIObits.GP4=0; } return; }

  • @etools
    @etools Жыл бұрын

    ****  変数とディファイン定義  **** //Sequece control extern volatile uint8_t sq_StateNumber;//状態遷移番号 extern volatile uint16_t timeUpCounter;//スイッチ長押し時間計測カウンタ extern bool fgSwitch; enum _sequenceName//状態遷移番号 { sqWaitSw1SEC2=1,//1.スイッチ長押し2秒で点灯 sqLedON,//2.LED点灯 sqPushSW1,//3.短押しスイッチ1回目 sqOnAndOff1,//4.LED点滅パターン1 sqPushSW2,//5.短押しスイッチ2回目 sqOnAndOff2,//6.LED点滅パターン2 sqWaitSw2SEC2,//7.スイッチ長押し2秒で消灯 sqEnd//8 }; #define LED1 LATAbits.LA0 #define LED2 LATAbits.LA1 #define SW1 PORTBbits.RB0 #define swON 0 #define swOFF 1 #define false 0 #define true 1 #define High 1 #define Low 0