Skip to main content
Renesas Electronics Corporation

ロボット覚醒プロジェクト第一弾 (シーズン2)

親子で作る!自動で歩く昆虫ロボット

プロジェクト定義

本プロジェクトは、秋葉原にロボット専門店を持つ“ツクモ” と、半導体メーカーの“ルネサスエレクトロニクス”の2社で発足し、 親子向けを中心に、ロボットや電子部品を使ったワークショップやイベントを通して、ものづくり日本の人材育成に貢献するために活動します。


テーマ

「手動→自動」

プロジェクト名のロボット覚醒とは、ロボットを目覚めさせ自律させること。

動かすために人間の手が必要になるロボットを、コンピューターとなる電子部品を組み込んで自動的に動かす。

意図しない動きをするおもちゃから、子供が新しい発見や発想をしたり、改造によって可能性を広げる過程から、 自分のものへのこだわりを深めるなど、ものづくりに必要な気質を養うことが目標です。


実施イベント

親子で作る!自動で歩く昆虫ロボット

リモコンで操作するクワガタ/カブト型のロボット(タミヤ製)を覚醒し、自動で障害物を避けながら進むロボットにします。 ワークショップで基本的な改造方法のレクチャーとキットを提供し、その後自由にカスタマイズを行った参加者同士の ロボットで競技大会を実施します。 シーズン1から電子回路部分を進化し、本シーズン2では新作ボード「GR-ADZUKI」を利用します。

Image
ロボット覚醒プロジェクト第一弾 (シーズン2)のスケジュール

ロボット覚醒用プログラム

以下のプログラムは、ロボット覚醒用のプログラムです。目にあたる距離センサーの値に応じて、足を動かすシンプルなものになっています。

マイコンボードGR-ADZUKIへのプログラム書き込みについては特設サイト「Webコンパイラでスケッチ」を参照してください。


/*
  ロボット覚醒プロジェクト:
  物を避けて進むプログラム
  This program is public domain.
*/
#include <Arduino.h>

#define LED1 22
#define LED2 23
#define LED3 24
#define LED4 12
#define LED5 13

#define FORWARD   0
#define BACKWARD  1
#define RIGHT_MOTOR 200
#define LEFT_MOTOR  250
#define RIGHT_TH  1500
#define LEFT_TH   1500

void motor1_init(){
	analogWrite(5, 0);
	analogWrite(10, 0);
}

void motor2_init(){
	analogWrite(6, 0);
	analogWrite(11, 0);
}


void motor1_rotate(uint8_t dir, uint8_t data){
	switch (dir) {
	case FORWARD:
		analogWrite(5, data);
		analogWrite(10, 0);
		break;
	case BACKWARD:
		analogWrite(5, 0);
		analogWrite(10, data);
		break;
	default:
		break;
	}
}

void motor2_rotate(uint8_t dir, uint8_t data){
	switch (dir) {
	case FORWARD:
		analogWrite(6, data);
		analogWrite(11, 0);
		break;
	case BACKWARD:
		analogWrite(6, 0);
		analogWrite(11, data);
		break;
	default:
		break;
	}
}


void setup(){
	Serial.begin(9600);
	pinMode(LED1, OUTPUT);
	pinMode(LED2, OUTPUT);
	pinMode(LED3, OUTPUT);
	pinMode(LED4, OUTPUT);
	pinMode(LED5, OUTPUT);
	digitalWrite(LED1, HIGH);
	digitalWrite(LED2, HIGH);
	digitalWrite(LED3, HIGH);
	digitalWrite(LED4, HIGH);
	digitalWrite(LED5, HIGH);
	motor1_init();
	motor2_init();
}

void loop(){
	int right_eye, left_eye;
	
	digitalWrite(LED1, HIGH);
	digitalWrite(LED2, HIGH);
	digitalWrite(LED3, HIGH);
	digitalWrite(LED4, HIGH);
	digitalWrite(LED5, HIGH);
	
	left_eye = 0;
	right_eye = 0;
	for(int i = 0; i < 5; i++){
		left_eye  += analogRead(0);
		right_eye += analogRead(1);
	}
	Serial.println(right_eye);
	Serial.println(left_eye);
	
	if(analogRead(2) < 500){ // 強制的に停止
		digitalWrite(LED5, LOW);
		motor1_init();
		motor2_init();
	} else if((left_eye > LEFT_TH) && (right_eye > RIGHT_TH)){ // 両目に見えた
		digitalWrite(LED1, LOW);
		digitalWrite(LED2, LOW);
		motor2_rotate(FORWARD, LEFT_MOTOR);
		motor1_rotate(BACKWARD, RIGHT_MOTOR);
		
	} else if(left_eye > LEFT_TH) { // 左目に見えた
		digitalWrite(LED2, LOW);
		motor2_rotate(FORWARD, LEFT_MOTOR);
		motor1_rotate(FORWARD, 0);
		
	} else if(right_eye > RIGHT_TH) { // 右目に見えた
		digitalWrite(LED1, LOW);
		motor2_rotate(FORWARD, 0);
		motor1_rotate(FORWARD, RIGHT_MOTOR);
		
	} else { // 何もない
		motor2_rotate(FORWARD, LEFT_MOTOR);
		motor1_rotate(FORWARD, RIGHT_MOTOR);
	}
	
	delay(100);
}

Scratchでプログラム遊び!

ロボット覚醒に使われるGR-ADZUKIでは子供向けビジュアルプログラミング「Scratch」で遊ぶことができます。WindowsとMacで利用可能です。
GR-ADZUKI用には、Scratchの派生品「S4A」を使用します。やり方は特設サイト「Scratch(S4A)で遊ぶ!」を参照してください。

Image
GR-ADZUKI Scratch S4Aドラゴン

Support

Support Communities

Support Communities

Get quick technical support online from Renesas Engineering Community technical staff.
Browse Articles

Knowledge Base

Browse our knowledge base for helpful articles, FAQs, and other useful resources.
Submit a Ticket

Submit a Ticket

Need to ask a technical question or share confidential information?