#include <xc.h>
#include <stdio.h>
#include “LiLaC-functions.h”
int main(void) {
/*しきい値(Threshold)の設定 INPUT1のしきい値をthre1 INPUT2のしきい値をthre2としてここに設定*/
thre1=512; /* INPUT1 0から1024の間の値、中心値は512 これでスイッチのオン・オフを設定★こちらピンソケット★*/
thre2=512; /* INPUT2 0から1024の間の値、中心値は512 これでスイッチのオン・オフを設定★こちらボリューム付き★*/
setting(); //コンピュータ(16F18313)の初期設定
start_select(); // 論理選択スイッチをandスタート、1秒以内にorにすると計測モードへ
while(1){//★★ここからプログラム本体(変更堪能なところ)
logic_set();
get_sensor_data(); //センサの値を読み込み
/*論理選択スイッチの値によって分岐する andは1 orは2 */
switch(SW_f){
case 1: /*AND回路 */
OUTPUT1 =ON;
spend_time(2);
OUTPUT1 =OFF;
spend_time(2);
for_start1:
// 1時間に一回、モーターを15秒動かす。1秒を15セット
for (i= 0; i<15; i++) {
OUTPUT1 = OFF;
OUTPUT2 = ON; //
spend_time(10); // ONを継続する時間(1セット1秒)
}
OUTPUT2 = OFF; // 15秒経ったらモーターOFF
for (i=0; i<3585; i++) {
// 59分45秒(3585秒)LEDを点滅させ、暗くなったら常夜灯
// 1秒を3585セット
get_sensor_data();
if (in2_f == 0) { // CdS入力がOFFのとき
OUTPUT1 = ON;
spend_time(5);
OUTPUT1 = OFF;
spend_time(5);
}
else{
OUTPUT1 = ON;
spend_time(10);
}
}
goto for_start1;
break; //AND回路分終了
case 2: /*OR回路 */
OUTPUT1 =ON;
spend_time(2);
OUTPUT1 =OFF;
spend_time(2);
OUTPUT1 =ON;
spend_time(2);
OUTPUT1 =OFF;
spend_time(2);
i = 0;
for_start3:
get_sensor_data(); //センサの値を読み込み
if (in1_f == 1) {
// タッチセンサin1_fが1ならリレーをオン
for_start2:
OUTPUT1 = OFF;
OUTPUT2 = ON;
get_sensor_data(); //センサの値を読み込み
if (in1_f == 1) {
// タッチセンサがオンのままならリレーもオンのまま
goto for_start2;
}
else{
// タッチセンサがオフになったら15秒待機してリレーをオフ
spend_time(150);
OUTPUT1 = OFF;
OUTPUT2 = OFF;
goto for_start3;
}
}
else{
// タッチセンサがオフのときはタクトスイッチを見る
logic_set();
if (SW_f == 0){
if (i == 0) {
for_start4:
OUTPUT1 = ON;
spend_time(2);
logic_set();
if ( SW_f == 0 ){
goto for_start4;
}
else{
i = 1;
goto for_start3;
}
}
else{
for_start5:
OUTPUT1 = OFF;
spend_time(2);
logic_set();
if ( SW_f == 0 ){
goto for_start5;
}
else{
i = 0;
goto for_start3;
}
}
}
else{
goto for_start3;
}
}
break; //OR回路分終了
}
}
}