跳转到主要内容

GR-COTTON Special Project: Button Switch

Overview

This project introduces usage of the GR-COTTON board's button switch.

cotton-sp-button

Preparation

You will need a GR-COTTON board and a USB cable (Micro B type).

Make sure the white jumper on the reverse side of GR-COTTON is moved to the “3V3 USB” side. If it is set to the BATT side, remove and reinsert it into the USB side.

cotton-sp-prepare
cotton-sp-prepare2

Using the Button Switch to Activate an LED

The sample below programs the red LED light to flicker when the GR-COTTON button switch is pressed.


#include <arduino.h>

void sw_push(){
  digitalWrite(22, LOW);
  delayMicroseconds(10000); // 10ms
  digitalWrite(22, HIGH);
}

void setup() {
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, sw_push, FALLING);
   
  pinMode(22, OUTPUT); //red led
  digitalWrite(22, HIGH);
}
  
void loop() {
}


Conserving Power Until Button Switch Activation

In the previous example, the MCU continued to work until the button switch was pressed. The sample below shows how to conserve power by using the STOP mode.

This sample appears to function the same as the one above (merely changing the LED color), but there are differences, such as battery life. This function is unique to GR-COTTON and GR-KURUMI.


#include <arduino.h>

void sw_push(){
  digitalWrite(23, LOW);
  setPowerManagementMode(PM_NORMAL_MODE);
  delayMicroseconds(10000); // 10ms
  digitalWrite(23, HIGH);
}

void setup() {
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, sw_push, FALLING);
   
  pinMode(23, OUTPUT); //green led
  digitalWrite(23, HIGH);
}
  
void loop() {
  setPowerManagementMode(PM_STOP_MODE);
  delay(0xffffffff); // into stop mode
}


LED Illumination While the Button Switch is Pressed

The sample continues illumination of the LED while the button switch is pressed.

The status of the button switch is checked using DigitalRead.


#include <arduino.h>

void sw_push(){
  digitalWrite(24, LOW);
  setPowerManagementMode(PM_NORMAL_MODE);
  while(digitalRead(2) == LOW);
  digitalWrite(24, HIGH);
}

void setup() {
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, sw_push, FALLING);
    
  pinMode(24, OUTPUT); //blue led
  digitalWrite(24, HIGH);
}
   
void loop() {
  setPowerManagementMode(PM_STOP_MODE);
  delay(0xffffffff); // into stop mode
}


Display a Message by Pressing the Button Switch

This sample shows how to display a message in the serial monitor by pressing the button switch (the sw_push process in the sketch).

Incidentally, serial class cannot be used during an interrupt triggered by the button switch. Therefore, the program waits for information that the switch has been pushed in the global variable g_sw_push, monitoring it from the loop.


#include <arduino.h>

boolean g_sw_push = 0; 
void sw_push(){
  g_sw_push = 1;
  delayMicroseconds(1000); // for cutting chattering
}

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, sw_push, FALLING);
}
   
void loop() {
  if(g_sw_push == 1){
    Serial.println("Hi!");
    Serial.flush();
    g_sw_push = 0;
  }
}

支持

支持社区

支持社区

在线询问瑞萨电子工程社群的技术人员,快速获得技术支持。
浏览常见问题解答

常见问题

浏览我们的知识库,了解常见问题的解答。
提交工单

提交工单

需要咨询技术性问题或提供非公开信息吗?