0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全球芯片缺货究竟谁是赢家谁是输家?

ss 来源:雷科技 作者:雷科技 2021-04-21 13:41 次阅读

导读:回看芯片产业,近30年来都没有出现过这样的短缺。报告!芯片缺货!而且是全球性缺货!照估计,今年上半年,缺货会导致汽车销售额减少600亿美元。从去年夏天开始芯片缺货就已经出现,影响多个市场。笔记本缺货,iPhone12缺货,游戏机(比如PS5)也缺货。

最近几周,情况似乎变得更加严重了,汽车产业成为重灾区,一些工厂被迫停产。不久前苏伊士运河被卡,从亚洲运往欧洲的芯片被堵,情况雪上加霜。

几天前,通用汽车、福特发布消息称,因为全球半导体缺货,北美工厂将会进一步压缩产能。TedMortonson分析师Baird认为:“我们遭到完美风暴的袭击,风暴不会很快离开。”他还说,回看芯片产业,近30年来都没有出现过这样的短缺。

为什么缺货

新冠疫情是导致芯片缺货的原因之一。去年受到新冠的冲击,一些芯片厂中断生产。当工厂恢复之后,先要为一些积压的订单供货。

另外,芯片制造商对市场需求出现误判,这也是缺货的原因之一。例如,在将近10年的时间里PC销量一直在减少,但2020年却突然增加,这是大家没有预料到的。

索尼、微软推出新游戏机,它们需要高端芯片。无线网络提供商需要强大的5G芯片,特朗普发起贸易战也让环境恶化。无奈之下,华为只能大量囤积芯片,这一做法也冲击了市场。

汽车产业为什么受灾最重

新冠强迫大家呆在家中,消费电子销量增加,汽车组件供应商需要大量芯片,但它们买不到芯片。对于芯片工厂来说,消费电子市场的利润比汽车市场的利润高,它们愿意为消费电子芯片供货。

福特、通用汽车、菲亚特?克莱斯勒(现在的Stellantis)、大众、本田受到的影响最大,其它汽车企业好一些,丰田免疫力强。美国银行证券分析师VivekArya认为,2011年大地震、海啸摧毁了供应链,丰田从中学到如何应对意外冲击,所以这一次有了充分准备。通用汽车指出,由于芯片缺货,今年的税前利润将会损失20亿美元。福特也没有好多少。芯片供应要到明年7月才能恢复。

IHSMarkit估计,今年1月至3月,芯片缺货导致北美汽车产量减少10万辆。去年1月份,新冠还没有在美国爆发,当时美国汽车产业可以为77天的需求供货。到了2021年2月,天数降到55天。

三星电子是全球最大芯片制造商,它最近警告称,旗下消费电子业务将会受到影响。三星联席CEOKohDong-jin没有透露哪些产品受到影响,但他强调说因为供需严重不平衡,4-6月的销售会受到伤害。

如何应对

英特尔已经宣布,将投资200亿美元在亚利桑那建两座芯片工厂。英特尔还说要设立新部门,既为自己制造芯片,也为其它企业制造。台积电也会在亚利桑那建厂。

未来3年,台积电准备投资1000亿美元在全球扩充产能,今年投资额约为280亿美元。拜登政府已经做出决定,投资2万亿美元改善美国基础设施,当中500亿美元将会投向芯片产业。1990年代,美国芯片制造产业占了全球约37%的份额,现在已经降到12%。

即使各大企业修建新厂,但在未来2-3年内,新厂还无法投产。无奈之下,各大企业只能提升现有工厂的产能,正因如此,一些分析师认为芯片缺货可能还会持续1年时间。

输与赢

2019年美国打压中国科技产业,中国企业开始囤积芯片。2020年中国半导体进口额同比增加14.6%,达到3500亿美元,约占GDP的2.4%;2019年中国的科技研发投入占GDP的比重约为1.2%,2020年上升到1.5%。地缘冲突影响了科技企业的投资欲望,而且芯片只有少数企业能生产。在全球芯片制造营收中,中国台湾和韩国企业占了83%,以前企业遵循“just-in-time”(零库存、适时生产)模式,现在越来越多的制造商可能会考虑“just-in-case”(以防万一)模式,因为美国如果推行技术封锁政策,供应链就会变得不确定。

最近,中国家电制造商已经宣布涨价,这是几十年来没有过的。芯片涨价,原材料涨价,圆晶涨价,家电涨价也是不得已的选择。汽车的生产成本也会上升,不过汽车成本上升应该不会导致全球CPI攀升,因为即使芯片价格上涨10%,汽车生产成本也只会增加0.2%。

2021年,中国、中国台湾、韩国的半导体生产资本开支将会占到全球的70%以上。2020年,半导体出口占韩国出口额的6%,占中国台湾的20%。在未来3-5年,中国台湾、韩国仍然会是引领。因为缺货,半导体设备制造商、企业将会成为受益者。小型汽车制造商、消费电子企业将会成为受害者,因为它们无法获得足够多的芯片。制造产能不够,制造成本上升,一些芯片设计公司会陷入麻烦。

苹果、亚马逊、谷歌、高通、Nvidia、AMD约有90%的芯片来自台积电。CLSA公司的SebastianHou指出:“芯片开发与合作需要很长的时间,美国企业如果想走芯片多元化之路,那需要不少时间。”全球约有70%的半导体是在亚洲生产的。

中芯国际已经是全球第五大芯片制造商。去年12月,美国下达禁令,不允许美国企业将技术“出口”给中芯国际。SebastianHou认为,因为美国的禁令,中芯国际很难追上对手。中芯国际与台积电的技术差距约为6年,未来可能会拉大到7至9年。虽然中芯量产的芯片主要是28纳米及更大制程的芯片,但除了消费电子行业,其它行业有这样的芯片就足够了。因为芯片缺货,中芯国际已经调涨价格。在高端芯片方面,中芯国际还要继续追赶。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    445

    文章

    47476

    浏览量

    407878
  • 高通
    +关注

    关注

    76

    文章

    7124

    浏览量

    187531
  • 三星电子
    +关注

    关注

    34

    文章

    15583

    浏览量

    180046
  • 通用汽车
    +关注

    关注

    0

    文章

    207

    浏览量

    16133
收藏 人收藏

    评论

    相关推荐

    线路板行业的上下游竞争格局:谁是行业的领导者和后来者?

    线路板行业的上下游竞争格局:谁是行业的领导者和后来者?
    的头像 发表于 03-01 10:54 215次阅读

    Vision Pro有了,谁是空间计算时代的“安卓机皇”?

    计算时代安卓机皇”的潜质,全球销量连续突破历年同期记录; • 全球空间计算平台市场即将迎来高速增长期,小派科技成就“技术优先”路线下的中国力量。 1984年,几乎是整整40年前,苹果公司发布了全新Machintosh(简称Mac)。这是世界上第一台采用图形用户界面的个人电
    的头像 发表于 02-04 18:43 117次阅读
    Vision Pro有了,<b class='flag-5'>谁是</b>空间计算时代的“安卓机皇”?

    Vision Pro和R1,谁是AI硬件的未来?

    在众多科技巨头抢占先机之时,一款来自小型初创公司的AI硬件脱颖而出,在一年一度的全球消费类电子盛会CES上炸翻全场。
    的头像 发表于 01-30 09:57 268次阅读
    Vision Pro和R1,<b class='flag-5'>谁是</b>AI硬件的未来?

    FPGA、ASIC、GPU谁是最合适的AI芯片

    CPU、GPU遵循的是冯·诺依曼体系结构,指令要经过存储、译码、执行等步骤,共享内存在使用时,要经历仲裁和缓存。 而FPGA和ASIC并不是冯·诺依曼架构(是哈佛架构)。以FPGA为例,它本质上是无指令、无需共享内存的体系结构。
    发表于 01-06 11:20 460次阅读
    FPGA、ASIC、GPU<b class='flag-5'>谁是</b>最合适的AI<b class='flag-5'>芯片</b>?

    【供应链大转型】芯片缺货,如何提防假货?这里有几点忠告,请记牢!

    【供应链大转型】芯片缺货,如何提防假货?这里有几点忠告,请记牢!
    的头像 发表于 12-07 10:34 172次阅读
    【供应链大转型】<b class='flag-5'>芯片</b><b class='flag-5'>缺货</b>,如何提防假货?这里有几点忠告,请记牢!

    twi和i2c总线有什么区别?

    twi和i2c总线有什么区别,他们谁是不是兼容谁
    发表于 11-08 07:45

    全球首款全大核移动芯片亮相

    芯片
    北京中科同志科技股份有限公司
    发布于 :2023年11月07日 12:53:00

    刚刚,郭明錤发文盛赞,这家全球第一生物识别传感器龙头成国产替代赢家!被华为带飞!

    今日(10月20日)中午,香港天风国际证券分析师郭明錤发文盛赞一家国产生物识别传感器芯片龙头企业,称其为被低估的国产替代赢家,在华为供应链中占据重要份额,2024年将恢复强劲增长。  郭明錤掌握众多
    的头像 发表于 10-23 15:54 448次阅读
    刚刚,郭明錤发文盛赞,这家<b class='flag-5'>全球</b>第一生物识别传感器龙头成国产替代<b class='flag-5'>赢家</b>!被华为带飞!

    谁是5G应用的狮子座?

    8月5日,广和通公布2023年上半年财报,2023上半年总营业收入38.65亿元,同比增长59.87%。在全球经济存在诸多不确定性的背景下,广和通精准预判市场风向,制定稳健发展策略,业绩仍保持逆势
    的头像 发表于 08-10 19:43 439次阅读
    <b class='flag-5'>谁是</b>5G应用的狮子座?

    谁是5G应用的狮子座?

    8月5日,广和通公布2023年上半年财报,2023上半年总营业收入38.65亿元,同比增长59.87%。在全球经济存在诸多不确定性的背景下,广和通精准预判市场风向,制定稳健发展策略,业绩仍保持逆势
    的头像 发表于 08-10 19:42 494次阅读
    <b class='flag-5'>谁是</b>5G应用的狮子座?

    汽车芯片缺货背后:欧美垄断市场,90%靠进口,每年超千亿

    为何这一次汽车芯片也会缺货了呢?一方面是因为新冠的影响,导致全球的产能下降,从而导致供应紧张,另外一方面则是随着5G、手机、AI等的发展,这些产业的芯片生产,挤占了原本汽车
    的头像 发表于 07-04 16:42 885次阅读

    谁是全球市值最高的芯片公司?

    在过去几十年里,英伟达有着自己的战略定位,这可能是能够取得如此成功的推动力。尤其是英伟达的“超级计算机”英伟达超算首次发布之后,更是备受关注。
    的头像 发表于 07-04 09:31 441次阅读

    Nodemcu 0.9对比arduino Nano for Neopixel谁是赢家

    大家好, 为了准备在家里制作真正的运动感应楼梯灯,我制作了一个原型。我正在决定是使用 arduino Nano(或任何其他 arduino)还是 Esp 来驱动 LED。偏好 Esp 8266。 然而,实验证明 Nano 更好,但理论上我知道 Esp 更强大,内存更大。 Nodemcu 0.9 有延迟(请注意视频中 22 秒的延迟)。 是什么导致了这种滞后? Nano 表现不错,尽管它有更多的像素可能会耗尽内存(对于实际步骤)。 你们觉得怎么样? 代码:全选 // \"Bling\" up your Staircase By Simon Jowett November 2014 // Thanks to the Neopxel Library by Adafruit #include #define PIN 3 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: //NEO_KHZ800800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) //NEO_KHZ400400 KHz (classic \'v1\' (not v2) FLORA pixels, WS2811 drivers) //NEO_GRBPixels are wired for GRB bitstream (most NeoPixel products) //NEO_RGBPixels are wired for RGB bitstream (v1 FLORA pixels, not v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN, NEO_GRB + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel\'s data input // and minimize distance between Arduino and first pixel.Avoid connecting // on a live circuit...if you must, connect GND first. // Set up Variables unsigned long timeOut=60000; // timestamp to remember when the PIR was triggered. int downUp = 0;// variable to rememer the direction of travel up or down the stairs int alarmPinTop = 7;// PIR at the top of the stairs int alarmValueTop = LOW; // Variable to hold the PIR status int alarmValueBottom = LOW; // Variable to hold the PIR status int ledPin = 16;// LED on the arduino board flashes when PIR activated int LDRSensor = A0;// Light dependant resistor int LDRValue = 0; // Variable to hold the LDR value int colourArray[350];// An array to hold RGB values int change = 1;// used in \'breathing\' the LED\'s int breathe = 0;// used in \'breathing\' the LED\'s void setup() { strip.begin(); strip.show(); // Initialize all pixels to \'off\' Serial.begin (115200);// only requred for debugging pinMode(ledPin, OUTPUT);// initilise the onboard pin 13 LED as an indicator pinMode(alarmPinTop, INPUT);// for PIR at top of stairs initialise the input pin and use the internal restistor delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can //detect infrared presence. for (int i=0 ;i < 350; i++){ // initilise the colourArray to zero colourArray=0; } } void loop() { LDRValue = analogRead(LDRSensor); Serial.println(LDRValue); if (timeOut+57000 < millis()) {// idle state - \'breathe\' the top and bottom LED to show program is looping breathe = breathe + change; strip.setPixelColor(0,0,0,breathe); strip.setPixelColor(1,0,0,breathe); strip.setPixelColor(6,0,0,breathe); strip.setPixelColor(7,0,0,breathe); strip.setPixelColor(8,0,0,breathe); strip.setPixelColor(9,0,0,breathe); strip.setPixelColor(14,0,0,breathe); strip.setPixelColor(15,0,0,breathe); strip.setPixelColor(16,0,0,breathe); strip.setPixelColor(17,0,0,breathe); strip.setPixelColor(22,0,0,breathe); strip.setPixelColor(23,0,0,breathe); strip.show(); if (breathe == 100 || breathe == 0) change = -change;// breathe the LED from 0 = off to 100 = fairly bright if (breathe == 100 || breathe == 0) delay (300);// Pause at beginning and end of each breath delay(25); } {// only switch on LED\'s at night when LDR senses low light conditions - you may have to change the number for your circumstances! alarmValueTop = digitalRead(alarmPinTop);// Constantly poll the PIR at the top of the stairs if (alarmValueTop == HIGH && downUp != 2){// the 2nd term allows timeOut to be contantly reset if one lingers at the top of the stairs before decending but will not allow the bottom PIR to reset timeOut as you decend past it. timeOut=millis();// Timestamp when the PIR is triggered.The LED cycle wil then start. downUp = 1; topdown();// lights up the strip from top down } if (alarmValueBottom == HIGH && downUp != 1){ // the 2nd term allows timeOut to be contantly reset if one lingers at the bottom of the stairs before decending but will not allow the top PIR to reset timeOut as you decend past it. timeOut=millis(); // Timestamp when the PIR is triggered.The LED cycle wil then start. downUp = 2; bottomup();// lights up the strip from bottom up } if (timeOut+10000 < millis() && timeOut+15000 < millis()) { //switch off LED\'s in the direction of travel. if (downUp == 1) { colourWipeDown(strip.Color(0, 0, 0), 50); // Off } if (downUp == 2){ colourWipeUp(strip.Color(0, 0, 0), 50);// Off } downUp = 0; //for (int i=0 ;i < 350; i++){ // Depending on your preference you may want to include this loop to clear out the colourArray // colourArray=0; // } } if (timeOut+15000 < millis() && timeOut+54999 > millis()) waterfall(); // Waterfall effect to play between these times after a PIR trigger. if (timeOut+55000 < millis() && timeOut+56999 > millis()) fade();// Fade/switch off LED\'s } } void topdown() { Serial.println (\"detected top\"); // Helpful debug message colourWipeDown(strip.Color(50, 50, 30), 40); // Warm White for(int i=0; i<3; i++) {// Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); } } void bottomup() { Serial.println (\"detected bottom\"); // Helpful debug message colourWipeUp(strip.Color(50, 50, 30), 40);// Warm White for(int i=0; i<3; i++) {// Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); } } // Fill the dots one after the other with a color void colourWipeDown(uint32_t c, uint8_t wait) { for(uint16_t i=0; i-1; i--) {// Shift the RGB colours down in the colourArray[] colourArray[i+3]=colourArray; } colourArray[0] = random(0,20);// Genearate the red component of the 1st LED at the top of the stairs colourArray[1] = random(0,40);// Genearate the green component of the 1st LED at the top of the stairs colourArray[2] = random(10,70); // Genearate the blue component of the 1st LED at the top of the stairs for (int k=0; k<351; k=k+3){ // Set and send the colours to the strip uint32_t c = strip.Color(colourArray[k],colourArray[k+1],colourArray[k+2]); strip.setPixelColor(((k+3)/3)-1,c); } strip.show();// and display the result delay(35);// delay to simulate running water } // Play the LED fade out void fade(){ for (int j = 0; j <70; j++) { for(int i=350; i>-1; i--) { colourArray=colourArray-1;// reduce intensity of light by 1 if (colourArray <= 0 ) colourArray = 0; } for (int k=0; k<351; k=k+3){ uint32_t c = strip.Color(colourArray[k],colourArray[k+1],colourArray[k+2]); strip.setPixelColor(((k+3)/3)-1,c); } strip.show(); delay(60); } breathe = 0; change = 1; } 代码:全选 // \"Bling\" up your Staircase By Simon Jowett November 2014 // Thanks to the Neopxel Library by Adafruit #include #define PIN 4 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: //NEO_KHZ800800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) //NEO_KHZ400400 KHz (classic \'v1\' (not v2) FLORA pixels, WS2811 drivers) //NEO_GRBPixels are wired for GRB bitstream (most NeoPixel products) //NEO_RGBPixels are wired for RGB bitstream (v1 FLORA pixels, not v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN, NEO_GRB + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel\'s data input // and minimize distance between Arduino and first pixel.Avoid connecting // on a live circuit...if you must, connect GND first. // Set up Variables unsigned long timeOut=60000; // timestamp to remember when the PIR was triggered. int downUp = 0;// variable to rememer the direction of travel up or down the stairs int alarmPinTop = 5;// PIR at the top of the stairs int alarmValueTop = LOW; // Variable to hold the PIR status int alarmValueBottom = LOW; // Variable to hold the PIR status int ledPin = 16;// LED on the arduino board flashes when PIR activated int LDRSensor = A0;// Light dependant resistor int LDRValue = 0; // Variable to hold the LDR value int colourArray[350];// An array to hold RGB values int change = 1;// used in \'breathing\' the LED\'s int breathe = 0;// used in \'breathing\' the LED\'s void setup() { strip.begin(); strip.show(); // Initialize all pixels to \'off\' Serial.begin (115200);// only requred for debugging pinMode(ledPin, OUTPUT);// initilise the onboard pin 13 LED as an indicator pinMode(alarmPinTop, INPUT);// for PIR at top of stairs initialise the input pin and use the internal restistor delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can //detect infrared presence. for (int i=0 ;i < 350; i++){ // initilise the colourArray to zero colourArray=0; } } void loop() { LDRValue = analogRead(LDRSensor); Serial.println(LDRValue); if (timeOut+57000 < millis()) {// idle state - \'breathe\' the top and bottom LED to show program is looping breathe = breathe + change; strip.setPixelColor(0,0,0,breathe); strip.setPixelColor(1,0,0,breathe); strip.setPixelColor(6,0,0,breathe); strip.setPixelColor(7,0,0,breathe); strip.setPixelColor(8,0,0,breathe); strip.setPixelColor(9,0,0,breathe); strip.setPixelColor(14,0,0,breathe); strip.setPixelColor(15,0,0,breathe); strip.setPixelColor(16,0,0,breathe); strip.setPixelColor(17,0,0,breathe); strip.setPixelColor(22,0,0,breathe); strip.setPixelColor(23,0,0,breathe); strip.show(); if (breathe == 100 || breathe == 0) change = -change;// breathe the LED from 0 = off to 100 = fairly bright if (breathe == 100 || breathe == 0) delay (300);// Pause at beginning and end of each breath delay(25); } {// only switch on LED\'s at night when LDR senses low light conditions - you may have to change the number for your circumstances! alarmValueTop = digitalRead(alarmPinTop);// Constantly poll the PIR at the top of the stairs if (alarmValueTop == HIGH && downUp != 2){// the 2nd term allows timeOut to be contantly reset if one lingers at the top of the stairs before decending but will not allow the bottom PIR to reset timeOut as you decend past it. timeOut=millis();// Timestamp when the PIR is triggered.The LED cycle wil then start. downUp = 1; topdown();// lights up the strip from top down } if (alarmValueBottom == HIGH && downUp != 1){ // the 2nd term allows timeOut to be contantly reset if one lingers at the bottom of the stairs before decending but will not allow the top PIR to reset timeOut as you decend past it. timeOut=millis(); // Timestamp when the PIR is triggered.The LED cycle wil then start. downUp = 2; bottomup();// lights up the strip from bottom up } if (timeOut+10000 < millis() && timeOut+15000 < millis()) { //switch off LED\'s in the direction of travel. if (downUp == 1) { colourWipeDown(strip.Color(0, 0, 0), 50); // Off } if (downUp == 2){ colourWipeUp(strip.Color(0, 0, 0), 50);// Off } downUp = 0; //for (int i=0 ;i < 350; i++){ // Depending on your preference you may want to include this loop to clear out the colourArray // colourArray=0; // } } if (timeOut+15000 < millis() && timeOut+54999 > millis()) waterfall(); // Waterfall effect to play between these times after a PIR trigger. if (timeOut+55000 < millis() && timeOut+56999 > millis()) fade();// Fade/switch off LED\'s } } void topdown() { Serial.println (\"detected top\"); // Helpful debug message colourWipeDown(strip.Color(50, 50, 30), 40); // Warm White for(int i=0; i<3; i++) {// Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); } } void bottomup() { Serial.println (\"detected bottom\"); // Helpful debug message colourWipeUp(strip.Color(50, 50, 30), 40);// Warm White for(int i=0; i<3; i++) {// Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); } } // Fill the dots one after the other with a color void colourWipeDown(uint32_t c, uint8_t wait) { for(uint16_t i=0; i-1; i--) {// Shift the RGB colours down in the colourArray[] colourArray[i+3]=colourArray; } colourArray[0] = random(0,20);// Genearate the red component of the 1st LED at the top of the stairs colourArray[1] = random(0,40);// Genearate the green component of the 1st LED at the top of the stairs colourArray[2] = random(10,70); // Genearate the blue component of the 1st LED at the top of the stairs for (int k=0; k<351; k=k+3){ // Set and send the colours to the strip uint32_t c = strip.Color(colourArray[k],colourArray[k+1],colourArray[k+2]); strip.setPixelColor(((k+3)/3)-1,c); } strip.show();// and display the result delay(35);// delay to simulate running water } // Play the LED fade out void fade(){ for (int j = 0; j <70; j++) { for(int i=350; i>-1; i--) { colourArray=colourArray-1;// reduce intensity of light by 1 if (colourArray <= 0 ) colourArray = 0; } for (int k=0; k<351; k=k+3){ uint32_t c = strip.Color(colourArray[k],colourArray[k+1],colourArray[k+2]); strip.setPixelColor(((k+3)/3)-1,c); } strip.show(); delay(60); } breathe = 0; change = 1; }
    发表于 05-23 07:13

    谁是机器视觉领域“吸金王”?

    据高工机器人产业研究所(GGII)预测,至2027年我国机器视觉市场规模将达到565.65亿元,其中2D视觉市场规模将达到407.15亿元,3D视觉市场规模将达到158.5亿元。目前我国机器视觉在工业场景中的总体渗透率仍旧在10%以下,对比工业场景庞大的体量而言,机器视觉行业仍有较大发展空间。
    的头像 发表于 04-18 11:18 1142次阅读

    芯片交期再缩短;IGBT持续缺货涨价!存储芯片全员巨亏,减产进行时...

    导语:芯片交付周期已连续9个月缩短!车用芯片依旧紧缺,尤其是IGBT严重缺货;另外,驱动IC4月或调涨10%至15%...更多详情请阅读3月行情汇总。市场行情【芯片交期连接9个月缩短】
    的头像 发表于 04-10 15:34 893次阅读
    <b class='flag-5'>芯片</b>交期再缩短;IGBT持续<b class='flag-5'>缺货</b>涨价!存储<b class='flag-5'>芯片</b>全员巨亏,减产进行时...