Description
Precision four channel grow light engineered for vertical farming with wide coverage low heat and full spectrum control at commercial scale.
The GrowPros CHAMELEON is built for vertical growers who need precision control without excess heat or wasted space. Its ultra flat body fits cleanly into two-tier and three-tier rack systems, delivering strong, even light across every level. This LED grow light is engineered to support consistent plant development from early veg through late flower in high-density environments.
With four fully adjustable spectrum channels and wattage options at 660, 830, or 1000 watts, the CHAMELEON gives growers real control over morphology, internode spacing, and finish quality. Designed for large-scale commercial craft growing, it delivers 4 size options for canopy coverage while keeping heat low enough for stacked cultivation.
Adjustable Spectrum
/* ============================= CHAMELEON PROCESS BAR STYLES ============================= *//* Panel spacing */#control-panelschameleon .control-panelchameleon{ width:100%; margin: 0 0 16px 0;}/* Title spacing */#control-panelschameleon .slider-title{ font-size: 14px; font-weight: 700; letter-spacing: .4px; margin: 0 0 8px 0;}/* TRACK */#control-panelschameleon .process-containerchameleon{ position: relative; width: 100%; height: 12px; background: #1c1c1c; border: 1px solid rgba(255,255,255,.25); border-radius: 999px; overflow: hidden; cursor: pointer; box-sizing: border-box;}/* FILL */#control-panelschameleon .process-containerchameleon .process-bar{ position: absolute; left: 0; top: 0; height: 100%; width: 0%; border-radius: 999px; background: linear-gradient(90deg,#ae00ef,#103e93,#69b72d,#f4c41c,#e62718); box-shadow: 0 0 0 1px rgba(255,255,255,.12) inset; transition: width .18s ease;}/* THUMB */#control-panelschameleon .process-containerchameleon .process-thumb{ position: absolute; top: 50%; left: 0; width: 18px; height: 18px; background: #000000; border: 2px solid rgba(0,0,0,.75); border-radius: 50%; transform: translate(-50%, -50%); z-index: 2; box-shadow: 0 6px 14px rgba(0,0,0,.35); transition: transform .08s ease;}/* Value row */#control-panelschameleon .slider-paratitle{ display:flex; justify-content: space-between; margin-top: 8px; font-size: 14px; line-height: 1.2; color: #000000;}#control-panelschameleon .slider-paratitle .current-value{ font-weight: 900; color: #f4c41c;}/* Hard override if theme/Elementor hides it */#control-panelschameleon .process-containerchameleon,#control-panelschameleon .process-containerchameleon .process-bar,#control-panelschameleon .process-containerchameleon .process-thumb{ display: block !important; visibility: visible !important; opacity: 1 !important;}
jQuery(function($){ const canvas = $(‘#myChart_chameleon’)[0]; if (!canvas) return; const ctx = canvas.getContext(‘2d’); let chart; const labels = [”, ”, ‘360’, ”, ”, ”, ‘380’, ”, ”, ”, ”, ”, ”, ‘450’, ”, ”, ”, ”, ”, ‘500’, ”, ”, ”, ”, ”, ”, ”, ”, ”, ‘600’, ”, ”, ”, ”, ‘660’, ”, ”, ”, ”, ”, ”, ‘730’, ”, ”, ”, ”, ”, ‘780’, ”, ”, ”, ”, ”, ”]; const dataset1chameleon = { label:’Ch1′, data:[0,0,0,0.1,0.8,3,10,19,10,3.2,0.8,0.2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] }; const dataset2chameleon = { label:’Ch2′, data:[0,0,0,0,0,0,0,0,0.6,3.6,9.2,18.2,31,38,60,23,6.7,3.9,6.3,14.8,20.4,23.1,24.2,25,25.5,25.7,25.9,25.9,25.2,23.4,21.1,18.2,15.4,12.8,10.2,8,6.2,4.6,3.4,2.4,1.6,1,0.6,0.3,0.2,0.1,0.1,0,0,0,0,0,0,0] }; const dataset3chameleon = { label:’Ch3′, data:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.1,0.4,1.1,6.2,30,89,30,11.3,4.3,2,1.1,0.6,0.3,0.2,0.1,0.1,0,0,0,0,0,0,0,0,0] }; const dataset4chameleon = { label:’Ch4′, data:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.2,1.1,3,10,35,10,3.2,1.1,0.4,0.2,0,0,0,0,0] }; const colors = [ ‘#ae00ef’,’#ae00ef’,’#ae00ef’,’#ae00ef’,’#ae00ef’,’#ae00ef’,’#ae00ef’,’#ae00ef’,’#ae00ef’,’#ae00ef’, ‘#65009f’,’#40009f’,’#1e149e’,’#103e93′,’#265aa8′,’#3173b8′,’#3698d5′,’#45bee3′,’#6fc4be’,’#6ebf80′, ‘#69b72d’,’#69b72d’,’#6bb72d’,’#79bc28′,’#97c626′,’#a8cc2b’,’#c8d933′,’#d8e036′,’#f1eb36′,’#f4c41c’, ‘#f19518′,’#ed761b’,’#e95619′,’#e62718′,’#e11713′,’#ce141b’,’#b91c22′,’#a91f24′,’#951e23′,’#851123′, ‘#7f191e’,’#7d191d’,’#76161b’,’#6a1216′,’#631014′,’#5f0e12′,’#51050a’,’#440104′,’#380103′,’#230304′, ‘#221714′,’#221714′,’#221714′,’#221714′,’#221714′,’#221714′,’#221714′,’#221714′,’#221714′,’#221714’ ]; let scale1 = 1, scale2 = 1, scale3 = 1, scale4 = 1; function createGradient(ctx, area, colors) { const g = ctx.createLinearGradient(area.left, 0, area.right, 1); colors.forEach((c, i) => g.addColorStop(i / (colors.length – 1), c)); return g; } function combineData() { return dataset1chameleon.data.map((_, i) => dataset1chameleon.data[i] * scale1 + dataset2chameleon.data[i] * scale2 + dataset3chameleon.data[i] * scale3 + dataset4chameleon.data[i] * scale4 ); } function initChart() { chart = new Chart(ctx, { type: ‘line’, data: { labels: labels, datasets: [ { data: combineData(), borderWidth: 0, fill: true, backgroundColor(context) { const area = context.chart.chartArea; if (!area) return null; return createGradient(context.chart.ctx, area, colors); }, borderColor: ‘transparent’, tension: 0.4, pointRadius: 0, pointHoverRadius: 0 }, { data: combineData(), borderWidth: 2, borderColor: ‘#000000’, backgroundColor: ‘transparent’, tension: 0.4, pointRadius: 0, pointHoverRadius: 0 } ] }, options: { responsive: true, animation: { duration: 300 }, transitions: { active: { animation: { duration: 300 }}, resize: { animation: { duration: 0 }} }, plugins: { legend: { display: false }}, scales: { x: { ticks: { autoSkip: false, maxRotation: 0, minRotation: 0, callback: (v, i) => labels[i], color: ‘#000000’, font: { size: 11 } }, border: { color: ‘#000000’, width: 2 }, grid: { display: false } }, y: { beginAtZero: true, max: 120, ticks: { color: ‘#000000’, callback: v => v + ‘%’ }, border: { color: ‘#000000’, width: 2 }, grid: { color: ‘rgba(255,255,255,0.15)’ } } } } }); } function updateChart() { const combined = combineData(); chart.data.datasets[0].data = combined; chart.data.datasets[1].data = combined; chart.update(‘active’); } /* Store slider reset callbacks */ let sliderResetFunctions = []; function createProcessBar(containerId, valueId, initialPercent, setScaleCallback) { const $container = $(‘#’ + containerId); const $panel = $container.closest(‘.control-panelchameleon’); const $thumb = $container.find(‘.process-thumb’); const $bar = $container.find(‘.process-bar’); const $val = $(‘#’ + valueId); let dragging = false; let hasMoved = false; let currentPercent = initialPercent; let rafId = null; function updateFromPixel(pageX) { const offsetLeft = $container.offset().left; const width = $container.width() || 1; const localX = Math.min(Math.max(pageX – offsetLeft, 0), width); const ratio = localX / width; currentPercent = ratio * 100; $bar.css(‘width’, currentPercent + ‘%’); $thumb.css(‘transform’, ‘translate(-50%, -50%) translateX(‘ + localX + ‘px)’); $val.text(currentPercent.toFixed(0) + ‘%’); setScaleCallback(ratio); updateChart(); } function requestDrag(px) { if (rafId) return; rafId = requestAnimationFrame(() => { updateFromPixel(px); rafId = null; }); } function initPosition() { const width = $container.width() || 1; const localX = (currentPercent / 100) * width; $bar.css(‘width’, currentPercent + ‘%’); $thumb.css(‘transform’, ‘translate(-50%, -50%) translateX(‘ + localX + ‘px)’); $val.text(currentPercent.toFixed(0) + ‘%’); } $panel.on(‘mousedown touchstart’, function(e) { dragging = true; hasMoved = false; const px = e.pageX || (e.originalEvent.touches ? e.originalEvent.touches[0].pageX : 0); requestDrag(px); e.preventDefault(); }); $(document).on(‘mousemove touchmove’, function(e) { if (!dragging) return; hasMoved = true; const px = e.pageX || (e.originalEvent.touches ? e.originalEvent.touches[0].pageX : 0); requestDrag(px); e.preventDefault(); }); $(document).on(‘mouseup touchend touchcancel’, function() { dragging = false; }); $panel.on(‘click’, function(e) { if (hasMoved) { hasMoved = false; return; } requestDrag(e.pageX); }); initPosition(); // Register reset on resize sliderResetFunctions.push(() => initPosition()); } // Init everything initChart(); createProcessBar(‘process-container1chameleon’,’global-value1chameleon’, 100, v => scale1 = v); createProcessBar(‘process-container2chameleon’,’global-value2chameleon’, 100, v => scale2 = v); createProcessBar(‘process-container3chameleon’,’global-value3chameleon’, 100, v => scale3 = v); createProcessBar(‘process-container4chameleon’,’global-value4chameleon’, 100, v => scale4 = v); /* Lag-free chart & slider resize */ let resizeTimer; $(window).on(‘resize’, function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(() => { // Reset sliders sliderResetFunctions.forEach(fn => fn()); // Instant chart re-draw, zero animation if (chart) { chart.resize(); chart.update(‘none’); } }, 50); });});
Slide the Bar to See How the Spectrum Changes
UVA
0% 100%Cool White
0% 100%Red
0% 100%Far Red
0% 100%
Features
- 4 adjustable channels for customizable spectrum
- Replaceable UV bars
- Extra-wide bars with algorithmic diode placement for even PPFD
- Designed for large scale commercial craft growing
- Extra wide canopy light spread for wide benches or tents
- Designed for spectrum crip steering- give your plants the best combinations of light throughout the day and each stage of growth and flowering cycles
- Compatible with the sizes of Chameleon
What’s Included?
- GrowPros Chameleon Grow Light
Explore more from our collection.











Reviews
There are no reviews yet.