中学の技術授業からは離れてしまったけれど、夏休みの一研究として以前から考えていた変更に着手した。
それは、LiLaCのプログラムを中学生が自分でできないかということ。
LiLaCは本来 Learn intelligence of Logic and Circuitry として論理と回路について学ぶのものという位置づけで考えていた。
それでも、なんとか学習指導要領が求めている「計測と制御のプログラミング」にも使えないかとは思っていた。なかなか難しいかもしれないけれど、一応あがいてみようかなと思って取り組んだ。
LiLaC自体は、PCでプログラムしてコンパイルしたものを書き込み機でワンチップマイコンに書き込んでいる。
上の写真は、LiLaC ver.2として開発しているプロトタイプ基板。書き込み自体も直接接続して転送出来るように考えている。
完全にお金が発生せずに公開出来るよう、C言語を用いて一から自分でプログラムをおこしていたが、独学で学習しながらなのでちょっとしたことで何度もつまづいていた。
今回娘が結婚した旦那さんがエンジニアだったこともあって助言を受けることができたので、プログラムを「生徒が自分で構成する簡単な部分」だけを取り出してソースコードを書けるようにして、それ以外の部分は別ファイルで見えないようにするよう変更した。
とりあえず、メインの部分はすごく簡単になった。
下は、そのメインプログラムを無料の開発環境であるマイクロチップ社のMPLAB IDEで表示させているところ。
ここから、分岐や繰り返しの部分を簡単にできるように、メインへ戻すような作業をしていこうと考えている。
さらに、スタート時にスイッチで選択して、センサーの計測値をサーボモーターによって針のメーターで示すようにすればいいかな。
といいつつ、夏休みはもう終わりになるので、ここからは少しずつ進めていくようにしたい。(その他の宿題がたくさんたまっているのは、学生時代からかわらない)
ちなみに外に出した部分のソースコード(現時点で以前と同じ動作をするもの)は以下
/* * File: LiLaC-v22functions.h * Author: dai_a * * Created on 2022/08/13, 6:45 */ // 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 = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) #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 = OFF // Brown Out Detect (BOR disabled) #pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled) #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. #define _XTAL_FREQ 1000000 /*ピンの定義をしておく*/ #define OUTPUT1 GP5 #define OUTPUT2 GP4 #define SW1 GP3 #define MOTOR GP2 #define INPUT1 AN0 #define INPUT2 AN1 /*状態の定義をしておく*/ #define ON 1 #define OFF 0 void content(short int Thre1, short int Thre2, short int Tim_sec);
#include "LiLaC-v22functions.h"
#include