witnessmenow / esp32-cheap-yellow-display Goto Github PK
View Code? Open in Web Editor NEWBuilding a community around a cheap ESP32 Display with a touch screen
License: MIT License
Building a community around a cheap ESP32 Display with a touch screen
License: MIT License
Hello!
I found your project from https://hackaday.com/2023/10/28/cheap-yellow-display-builds-community-through-hardware/
Could you please add information about the license of this repository β is it allowed to copy, change and use the code in any purpose?
It would be great to see any popular open source license.
Got excited about this project and ordered two.
Tried the first couple of examples but got following error.
any ideas? both are doing same thing on all two of my devices.
Thanks
E (157) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0
Rebooting...
ets Jul 29 2019 12:21:46
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13964
load:0x40080400,len:3600
entry 0x400805f0
E (134) spi_flash: Detected size(4096k) smaller than the size in the binary image header(16384k). Probe failed.
assert failed: do_core_init startup.c:328 (flash_ret == ESP_OK)
Anyone used bodmer/TFT_eWidget library with CYD and got touch working?
There is an amp and a connector for a simple speaker built into the CYD, so it would be great if simple solution to use it. Preferably that is ready to go out of the box.
The JST connector seems to be a 2 pin 1.25mm pitch connector.
This is a potential option: https://s.click.aliexpress.com/e/_mttu5ck
I will buy it and see does it work
Does somebody have this version and got it running with esphome? I only have a white screen with the provided examples.
The display is a little bit smaller but other than that it looks like a CYD
Any way to adjust the Volume of the HelloRadio speaker output?
by the way, I got the program working with no display?
any ideas?
Thanks.
Different from #3 , this is the code for getting the speaker working
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/Examples/Showcases/1-Slideshow
error is
void loop() {
TouchPoint t = ts.getTouch();
Arduino: 1.8.16 (Windows 10), Board: "ESP32 Dev Module, Disabled, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None, Disabled"
C:\Users\greyl\AppData\Local\Temp\arduino_modified_sketch_188537\CYC_Slideshow.ino: In function 'void loop()':
CYC_Slideshow:240:3: error: 'TouchPoint' was not declared in this scope
TouchPoint t = ts.getTouch();
^~~~~~~~~~
C:\Users\greyl\AppData\Local\Temp\arduino_modified_sketch_188537\CYC_Slideshow.ino:240:3: note: suggested alternative: 'Point'
TouchPoint t = ts.getTouch();
^~~~~~~~~~
Point
CYC_Slideshow:242:55: error: 't' was not declared in this scope
if((millis() - timer > 10*1000) || buttonPressed || t.zRaw > 0) {
^
C:\Users\greyl\AppData\Local\Temp\arduino_modified_sketch_188537\CYC_Slideshow.ino:242:55: note: suggested alternative: 'ts'
if((millis() - timer > 10*1000) || buttonPressed || t.zRaw > 0) {
^
ts
exit status 1
'TouchPoint' was not declared in this scope
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
In the listDir function you have a line
File file = root.openNextFile(); while (file) { if (file.isDirectory()) { Serial.print(" DIR : "); Serial.println(file.name()); if (levels) { listDir(fs, file.name(), levels - 1); <-- } } else { Serial.print(" FILE: "); Serial.print(file.name()); Serial.print(" SIZE: "); Serial.println(file.size()); } file = root.openNextFile(); }
It should be:
listDir(fs, file.path(), levels - 1); <--
This will allow the listDir function to run recursively
I've added emoji fonts to have some nice looking icons in my project derived from the examples here. Would it be useful for other to have an example with emojis embedded ?
- file: 'fonts/NotoEmoji-VariableFont_wght.ttf'
id: noto14
size: 14
glyphs: "π§π¦β
ππΆβ "
and in display :
it.print(0, 220, id(noto14), TextAlign::TOP_LEFT, "π§");
This is a really cool looking project that already uses very similar hardware to the CYD, so it should be a relatively light lift to port.
@88markus88
Seems like the only way to contact you is to raise and issue.
This fits perfectly for the new USB C board,
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/3dModels/Markus_CYD_Simple_Case
but I prefer a stand like this:
https://www.thingiverse.com/thing:4768766
it would require the user to get a 90 degree adapter like this
https://www.amazon.com/AreMe-Extender-Compatible-Notebook-Computers/dp/B0B2NJ3P3L
Think you could make that?
Thanks,
Grey
Hi,
I try to get the Esp32-2432s028 runnig with the basic "Hello World" script. But the esp32 goes constantly to reset.
I have no errors with the compiling and I added your User_Setup.h to the TFT_eSPI map.
What did I wrong?
This is what I get on the Serial monitor:
rst:0x3 (SW_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13964
load:0x40080400,len:3600
entry 0x400805f0
ets Jul 29 2019 12:21:46
You guy's might want to add a full copy of the manufacturers archive for this display to this repo before it vanishes
http://pan.jczn1688.com/directlink/1/ESP32%20module/2.8inch_ESP32-2432S028R.rar
Includes, among other things LVGL demo, which is why I went looking for it.
I see your comment that you sourced some data from this file, but discarded the rest, this seems wrong to disregard aditional information and examples provided.
Hey there, I discovered this great project via Hackaday. I was curious which GPIO pins were available, but couldn't find that list anywhere on this repo. Could you add it to the documentation, please?
Cheers!
Dax
I just designed a tiny SD breakout card for the CYD. The ones you can buy online are way to big to put in a small enclosure with the display. I could put it up on one of the board shops for order if there is enough interest. (could also be used for other SD card breakout needs but is labeled to match the CYD pinouts. It will be a few weeks before I get them and test them for myself.
The LGVL example uses the following
SPIClass mySpi = SPIClass(HSPI);
which is different than the TouchTest which uses
SPIClass mySpi = SPIClass(VSPI);
I found I could not get the touch working in the LGVL examples without changing this around line 30
//SPIClass mySpi = SPIClass(HSPI); // touch does not work with this setting
SPIClass mySpi = SPIClass(VSPI); // critical to get touch working
The CYD board I am using is labeled ESP32-2432S028
When day shifts from Saturday to Sunday it displays as "SSundayy"
Could possibly pad shorter day names with spaces or clear that part of display when rolling over to a new day.
Hi,
Everything works on the boards, tried a few with capacitive and resistive panels - all good.
However, I can never get anything except a buzz or silence out of the speaker port, on all boards.
I see reports of needing the correct ESP board version in the IDE, but I have tried this to no avail.
Is anything obvious I am missing?
Hi, i tried to run Freetouchdeck on from a fork from Raycast7373 but i could not get touchscreen to work, i contacted him about is but he does not own a ESP32-2432s028r, and could not help me much, Does anyone maybe got Freetouchdeck running on ESP32-2432s028r? and maybe could help me out
These are my pins in User_setup.h
#define TFT_MISO 12
#define TFT_MOSI 13
#define TFT_SCLK 14
#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
//#define TFT_RST 4 // Reset pin (could connect to RST pin)
#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
#define TOUCH_CS 33
The driver is not working properly, the display is rotated and the colors are not the same.
Where can I find 2432S028C?
hey, thanks a ton for your work on this H/W! looks amazing. just got it and will try to make a miniTV.
unfortunately when i try to run the 1-slideshow sketch, i only get a blankscreen.
i get the output below on the monitor but the screen stays black (or red if i do the test in red)
any idea?
thanks
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13964
load:0x40080400,len:3600
entry 0x400805f0
FAT type: FAT16
JPGs found: 6
Loading file no 0
File: seinfeld.jpg
It would be great to create a method or documentation around battery powering the CYD.
I'm sure it's very achievable using a cheap lipo IC like the TP4056* and possibly using the JST connector beside the USB, but a documented path to this would be great.
Not my area of expertise at all, but I do have some of the ICs ordered so I'll probably throw a stab at it shortly. But would be very happy for others input.
Also, maybe a stretch goal, but maybe even a PCB design specifically for the CYD , so it could be neatly mounted, might be cool
*Affiliate
GH Actions currently fail because GH pages needs to be enabled in the settings page of this repo, to allow the publishing.
I've just got myself one CYD and getting started. I went through the set up for lcgl (lv_conf.h) and TFT_eSPI (User_Setup.h). I can build the LVGL example and in principle, everything works but the colors are all "negative", looking like this:
When I use tft.invertDisplay() it looks better but the colors are "washed out" , the red here is very pale and the green looks like a grey:
This is how the demo looked when I received the display:
Anybody knows how to fix this? LV_COLOR_16_SWAP 1 in lv_conf.h doesn't help and screws the colors up completely.
The addition can be seen in my fork:-
https://github.com/mgaman/ESP32-Cheap-Yellow-Display/tree/mgaman-patch-1
The 3rd one in the list
https://thangs.com/designer/dimosram/3d-model/ESP32-2432S028%20enclosure%20for%20Battery%20and%20BMS-788656
is IMO completely wrong for the board
https://www.thingiverse.com/thing:5990927 is correct (but just having to reprint it 1mm bigger as VERY tight fit for me :) )
No clue unless the latest audio.h broke it?
Arduino: 1.8.16 (Windows 10), Board: "ESP32 Dev Module, Disabled, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None, Disabled"
In file included from F:\Users\greyl\Documents\Arduino\CYD_Radio\CYD_Radio.ino:46:
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:35:50: error: variable or field 'audio_id3image' declared void
extern attribute((weak)) void audio_id3image(File& file, const size_t pos, const size_t size); //ID3 metadata image
^~~~
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:35:50: error: 'File' was not declared in this scope
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:35:50: note: suggested alternative:
In file included from F:\Users\greyl\Documents\Arduino\libraries\TFT_eSPI/Processors/TFT_eSPI_ESP32.h:138,
from F:\Users\greyl\Documents\Arduino\libraries\TFT_eSPI/TFT_eSPI.h:101,
from F:\Users\greyl\Documents\Arduino\CYD_Radio\CYD_Radio.ino:40:
C:\Users\greyl\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\FS\src/FS.h:47:7: note: 'fs::File'
class File : public Stream
^~~~
In file included from F:\Users\greyl\Documents\Arduino\CYD_Radio\CYD_Radio.ino:46:
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:35:56: error: 'file' was not declared in this scope
extern attribute((weak)) void audio_id3image(File& file, const size_t pos, const size_t size); //ID3 metadata image
^~~~
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:35:56: note: suggested alternative: 'pipe'
extern attribute((weak)) void audio_id3image(File& file, const size_t pos, const size_t size); //ID3 metadata image
^~~~
pipe
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:35:62: error: expected primary-expression before 'const'
extern attribute((weak)) void audio_id3image(File& file, const size_t pos, const size_t size); //ID3 metadata image
^~~~~
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:35:80: error: expected primary-expression before 'const'
extern attribute((weak)) void audio_id3image(File& file, const size_t pos, const size_t size); //ID3 metadata image
^~~~~
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:36:51: error: variable or field 'audio_id3lyrics' declared void
extern attribute((weak)) void audio_id3lyrics(File& file, const size_t pos, const size_t size); //ID3 metadata lyrics
^~~~
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:36:51: error: 'File' was not declared in this scope
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:36:51: note: suggested alternative:
In file included from F:\Users\greyl\Documents\Arduino\libraries\TFT_eSPI/Processors/TFT_eSPI_ESP32.h:138,
from F:\Users\greyl\Documents\Arduino\libraries\TFT_eSPI/TFT_eSPI.h:101,
from F:\Users\greyl\Documents\Arduino\CYD_Radio\CYD_Radio.ino:40:
C:\Users\greyl\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\FS\src/FS.h:47:7: note: 'fs::File'
class File : public Stream
^~~~
In file included from F:\Users\greyl\Documents\Arduino\CYD_Radio\CYD_Radio.ino:46:
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:36:57: error: 'file' was not declared in this scope
extern attribute((weak)) void audio_id3lyrics(File& file, const size_t pos, const size_t size); //ID3 metadata lyrics
^~~~
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:36:57: note: suggested alternative: 'pipe'
extern attribute((weak)) void audio_id3lyrics(File& file, const size_t pos, const size_t size); //ID3 metadata lyrics
^~~~
pipe
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:36:63: error: expected primary-expression before 'const'
extern attribute((weak)) void audio_id3lyrics(File& file, const size_t pos, const size_t size); //ID3 metadata lyrics
^~~~~
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:36:81: error: expected primary-expression before 'const'
extern attribute((weak)) void audio_id3lyrics(File& file, const size_t pos, const size_t size); //ID3 metadata lyrics
^~~~~
In file included from F:\Users\greyl\Documents\Arduino\CYD_Radio\CYD_Radio.ino:46:
F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:448:5: error: 'File' does not name a type; did you mean 'pipe'?
File audiofile; // @suppress("Abstract class cannot be instantiated")
^~~~
pipe
Multiple libraries were found for "Audio.h"
Used: F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S-master
Not used: F:\Users\greyl\Documents\Arduino\libraries\ESP32-audioI2S
exit status 1
Error compiling for board ESP32 Dev Module.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
I tried the example "4-TouchDemo" for the ESP Home integration.
The touchscreen was off by 90Β°
So I had to change the transform value to true to make it work like expected:
touchscreen:
transform:
swap_xy: true
I am not sure if this was just the case for my CYD, but maybe it should be mentioned in the comments that this can be the case for some CYD's if someone else is struggling to find out why the inputs are off.
The CYD I bought: https://www.amazon.de/dp/B0CSYPG716
ESP Home Version: 2024.2.2
Thx for the library!
Keep up the good work!
I would love to see the CYD converted in to a nerdy desktop clock. Something along the lines of the Mario Clock or something with changeable faces. Has anyone tackled anything like that? I'd be happy to contribute.
One of the many esp32 based yellow PCB cheap displays on ali express
https://www.aliexpress.com/item/1005005059421229.html
Using this ini file in platformIO should make it usable with the CYD repo.
[env:cyd1732]
platform = espressif32
board = esp32-s3-devkitm-1
framework = arduino
lib_ldf_mode = deep+
monitor_filters = esp32_exception_decoder
monitor_speed = 115200
upload_speed = 460800
board_build.partitions = min_spiffs.csv
build_flags =
-DST7789_DRIVER
-DTFT_WIDTH=170
-DTFT_HEIGHT=320
-DTFT_MISO=-1
-DTFT_MOSI=13
-DTFT_SCLK=12
-DTFT_CS=10
-DTFT_DC=11
-DTFT_RST=1
-DTFT_BL=14
-DTFT_BACKLIGHT_ON=HIGH
-DTFT_BACKLIGHT_OFF=LOW
-DTOUCH_CS=-1
-DLOAD_GLCD
-DSPI_FREQUENCY=65000000
-DSPI_READ_FREQUENCY=20000000
-DSPI_TOUCH_FREQUENCY=2500000
-DTFT_INVERSION_ON
Hey! Thanks for sharing this.
I have tested the ESPHome templates and there seems to be an error on the display used. I changed the model to be ILI9342
as the ILI9341
did not work on my board (flickering a lot and not complete fill of the screen).
I also noticed that even when changing the model the color order instead of RGB the ILI9342
seems to be BGR.
Let me know if this is something you'll want me to add in the templates.
Cheers.
Looks like a cool project! Not identical hardware to the CYD, but looks close enough that its possible.
There's an existing library at https://github.com/rzeldent/esp32-smartdisplay that makes using the 2432S024R/C/N, 2432S028R, 3248S035R/C and 8048S070N/C so much easier for getting things up and running quickly. It supports LVGL and enabled me to port an existing app targeting an M5 stack to a 3248S035C in less than 20 minutes.
It might be worth considering working with the author of that project, given the boards it supports.
Examples/Basics/2-TouchTest/platformio.ini
I was trying out the examples and I found that adding -DUSE_HSPI_PORT causes the example touch code not to work
Cheers
I love what's being done here and have a request. I am trying to learn Both ESPHome and LVGL for use on one of these devices. Could someone come up with a simple example that uses these together?
So far I've found this: https://github.com/fvanroie/esphome-lvgl which has helped me compile something that the board accepts but I've yet to get anything showing on the screen
This may have been great once upon a time, but examples no longer compile in Arduino or Paltfromio.
Problem with Platformio is spiffs is no longer supported.
Can anyone show me how to do the slideshow example for example with current library's?
Thanks,
Grey
In case anyone else has this issue, I was unable to get any response from the touchscreen
I am using Arduino IDE v2.2.1 on Linux
In the end I found that if I replace the line: SPIClass mySpi = SPIClass(VSPI);
with: SPIClass mySpi = SPIClass(HSPI);
It resolved the issue :-)
I am using Visual Studio for the CYD, and I have the screen working with the following build flags:
build_flags =
-D USER_SETUP_LOADED
-D ILI9341_2_DRIVER
-D TFT_MISO=12
-D TFT_MOSI=13
-D TFT_SCLK=14
-D TFT_CS=15
-D TFT_DC=2
-D TFT_RST=-1
-D LOAD_GLCD=1
-D LOAD_FONT2
-D LOAD_FONT4
-D LOAD_FONT6
-D LOAD_FONT7
-D LOAD_FONT8
-D LOAD_GFXFF
-D SMOOTH_FONT
-D SPI_FREQUENCY=55000000
-D SPI_READ_FREQUENCY=20000000
-D SPI_TOUCH_FREQUENCY=2500000
-D TFT_WIDTH=240
-D TFT_HEIGHT=320
-D TFT_BL=21
-D TFT_BACKLIGHT_ON=HIGH
I did not see the touch_cs defined in the setup, and I am getting build errors trying to run the touch example in here. I am not sure if the code is wrong, or if I am doing something wrong. Build log portion is included below
Dependency Graph
|-- TFT_eSPI @ 2.5.33
|-- XPT2046_Touchscreen @ 0.0.0-alpha+sha.26b691b2c8
|-- SPI @ 2.0.0
Building in release mode
Compiling .pio\build\esp32dev\src\main.cpp.o
In file included from src/main.cpp:34:
.pio/libdeps/esp32dev/TFT_eSPI/TFT_eSPI.h:973:8: warning: #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available! [-Wcpp]
#warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available!
^~~~~~~
src/main.cpp: In function 'void setup()':
src/main.cpp:66:17: error: no matching function for call to 'XPT2046_Touchscreen::begin(SPIClass&)'
ts.begin(mySpi);
^
In file included from src/main.cpp:28:
.pio/libdeps/esp32dev/XPT2046_Touchscreen/XPT2046_Touchscreen.h:46:7: note: candidate: 'bool XPT2046_Touchscreen::begin()'
bool begin();
^~~~~
.pio/libdeps/esp32dev/XPT2046_Touchscreen/XPT2046_Touchscreen.h:46:7: note: candidate expects 0 arguments, 1 provided
*** [.pio\build\esp32dev\src\main.cpp.o] Error 1
Found this example of using similar display as 3d printer Klipper Screen addon.
Would be perfect if somebody could write detailed instructions for everyone, just like in other 3d print related project:
https://github.com/xperiments-in/xtouch
https://www.reddit.com/r/klippers/comments/12fy4qb/18_klipperscreen_on_esp32_and_35_display/
The CYD with two USB ports is a bit of an issue at the moment. It has a slightly different screen and the config and examples don't work right on it.
I think it's a knockoff rather than a newest version as the AliExpress store of the manufacturer still seems to sell the version with micro USB.
I believe it's the one great Scott linked to, so there are probably plenty of them floating around
It has the same name so despite being different, I think the best way to proceed is to document the difference and adapt instructions and examples to handle it
Any name suggestions?
"Cyd double USB" is pretty descriptive so might be good
I'd like to request a place to list the variants of CYD. I recognize that this is built around the micro-USB-only variant, but the USB-C variant is common too, and I can get it shipped for $9.50. Works perfectly with CYD-Klipper as long as I invert the colors (a fortunate feature) and I can imagine lots of people buying that variant without knowing better as I did. Galago works on it too.
There are other variants too, and I think with some basic documentation, we could take advantage of a lot of these with minimal or no changes.
As a start, the USB-C version has a slightly worse screen (more gray blacks) but comes cheaper. It's screen is inverted according to the CYD-Klipper developer, but otherwise it's the same.
There's also at least one larger version of the screen, but I've only heard of a few people trying it. One has higher resolution.
It would be really cool if there was an easy way to add add-ons to the CYD, maybe using a service like JLC assembly.
You could potentially use JST connectors to connect to the CYD
These cables could be used to connect the CYD to the add-on: https://s.click.aliexpress.com/e/_Del5hz7
Connectors that are supported by JLCPCB assembly: https://jlcpcb.com/partdetail/2794702-KH_A1251WF04A/C2688771
Why doesn't work WiFi and TFT at the same time in my CYD?
Can you please add the physical dimensions of the LCD display, and possibly the external dimensions of the PCB to the README. It's hard to gauge it's size based on the pictures I've seen online.
I love the idea of this project. I ordered a CYB to play around with based entirely off of your YouTube video and the existence of this GitHub. Keep up the good work.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.