Color Beacon

$34.95

Use this bright I2C device to light up with user feedback or identify a team color.

Out of stock

SKU: 45-2019 Category:

The Color Beacon illuminates one of seven colors or any custom color based on 8-bit RGB values. That’s 16,777,216 colors! The beacon can also indicate RED/BLUE team colors with the use of a magnet. Simply hold a magnet over the Hall Effect sensor on the left side of the beacon to change between RED, BLUE, and normal operating mode. There is no code or setup needed to operate as a team indicator. 

Note that this product is NOT legal in the Velocity Vortex FTC game.

Programmable

Red/Blue by Magnet

MRIColorBeacon.java –Driver/Class

/*
DO NOT EDIT THIS PROGRAM
Modern Robotics Color Beacon Driver
Created 12/7/2016 by Colton Mehlhoff of Modern Robotics using FTC SDK 2.35
Reuse permitted with credit where credit is due
This class provides functions to use the Color Beacon http://modernroboticsinc.com/color-beacon
Support is available by emailing support@modernroboticsinc.com
*/
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.hardware.HardwareMap;
import com.qualcomm.robotcore.hardware.I2cAddr;
import com.qualcomm.robotcore.hardware.I2cDevice;
import com.qualcomm.robotcore.hardware.I2cDeviceSynch;
import com.qualcomm.robotcore.hardware.I2cDeviceSynchImpl;
public class MRIColorBeacon {
private byte[] colorBcache;
private I2cDevice colorB;
private I2cDeviceSynch colorBreader;
HardwareMap hwMap = null;
public MRIColorBeacon() {
}
public void init(HardwareMap ahwMap, String cfgName) {
init(ahwMap, cfgName, 0x4c); //Default I2C address for color beacon is 0x4c
}
public void init(HardwareMap ahwMap, String cfgName, int i2cAddr8) {
hwMap = ahwMap;
colorB = hwMap.i2cDevice.get(cfgName);
colorBreader = new I2cDeviceSynchImpl(colorB, I2cAddr.create8bit(i2cAddr8), false);
colorBreader.engage();
}
public void off() {
colorBreader.write8(4, 0);
}
public void red() {
colorBreader.write8(4, 1);
}
public void green() {
colorBreader.write8(4, 2);
}
public void yellow() {
colorBreader.write8(4, 3);
}
public void blue() {
colorBreader.write8(4, 4);
}
public void purple() {
colorBreader.write8(4, 5);
}
public void teal() {
colorBreader.write8(4, 6);
}
public void white() {
colorBreader.write8(4, 7);
}
public void rgb(int red, int green, int blue) {
colorBreader.write8(4, 8); //Custom Color Mode
colorBreader.write8(5, red);
colorBreader.write8(6, green);
colorBreader.write8(7, blue);
}
public int getColorNumber(){
colorBcache = colorBreader.read(0x04, 4);
return colorBcache[0];
}
public String getColor() {
colorBcache = colorBreader.read(0x04, 4);
String returnString = "UNKNOWN";
switch (colorBcache[0]) {
case 0:
returnString = "OFF";
break;
case 1:
returnString = "RED";
break;
case 2:
returnString = "GREEN";
break;
case 3:
returnString = "YELLOW";
break;
case 4:
returnString = "BLUE";
break;
case 5:
returnString = "PURPLE";
break;
case 6:
returnString = "TEAL";
break;
case 7:
returnString = "WHITE";
break;
case 8:
returnString = "rgb " + ((int) colorBcache[1] & 0xFF) + " " + ((int) colorBcache[2] & 0xFF) + " " + ((int) colorBcache[3] & 0xFF);
break;
default:
returnString = "UNKNOWN";
break;
}
return returnString;
}
public void colorNumber(int number) {
number = number % 7;
switch (number) {
case 0:
off();
break;
case 1:
red();
break;
case 2:
green();
break;
case 3:
yellow();
break;
case 4:
blue();
break;
case 5:
purple();
break;
case 6:
teal();
break;
case 7:
white();
break;
default:
off();
break;
}
}
}

MRI_Color_Beacon.java –Example Program

/*
Modern Robotics Color Beacon Example
Created 12/7/2016 by Colton Mehlhoff of Modern Robotics using FTC SDK 2.35
Reuse permitted with credit where credit is due
Configuration:
I2CDevice "cb" (MRI Color Beacon with default I2C address 0x4c)
MRIColorBeacon class must be in the same folder as this program. Download from http://modernroboticsinc.com/color-beacon
To change color sensor I2C Addresses, go to http://modernroboticsedu.com/mod/lesson/view.php?id=96
Support is available by emailing support@modernroboticsinc.com
*/
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
@TeleOp(name="Color Beacon", group="MRI")
//@Disabled
public class MRI_Color_Beacon extends LinearOpMode {
MRIColorBeacon beacon = new MRIColorBeacon();
byte red = 0; //red value to sent to sensor
byte green = 0; //green ...
byte blue = 0;
int colorNumber; //number representing a preset color on the Color Beacon
@Override
public void runOpMode() {
telemetry.addData("Status", "Initialized");
telemetry.update();
beacon.init(hardwareMap, "cb"); //initializes the I2CDevice. Second parameter is the name of the sensor in the configuration file.
waitForStart();
while (opModeIsActive()) {
if(gamepad1.b)
red++;
if(gamepad1.a)
green++;
if(gamepad1.x)
blue++;
if(gamepad1.b || gamepad1.a || gamepad1.x)
beacon.rgb(red, green, blue); //Set beacon to illuminate the current red, green, and blue values
if(gamepad1.y){
colorNumber++; //increase color number
beacon.colorNumber(colorNumber); //sets color number between 0 and 7. If value is >, modulus is used
sleep(100);
}
telemetry.addData("rgb", (red & 0xFF) + " " + (green & 0xFF) + " " + (blue & 0xFF));
telemetry.addData("Color", beacon.getColor()); //getColor() returns a text string with the current color of the beacon
telemetry.update();
}
}
}

Spartan Programming Resources

LED Brightness: 840 Red 1680 Green 420 Blue mcd (millicandela)
Sensor Type:
 Four Wire I2C Sensor
Default I2C Address: 0x4c
Dimensions: 56 x 32 x 31 millimeters
Mounting Holes: 48 x 24 millimeters
Power: 5 volts DC, 50 mA max.
Signal Logic Levels: Logic 0 – 0 volts, Logic 1 – 5 volts
I2C Bus Speed: 100kHz max
I2C Address Change Option: yes

Scroll to Top